A
考虑(a cdot 2 <= b)是否成立,如果成立就可以不用a了,否则贪心先用b
B
首先如果全都是同一种字母显然成立,假设不是同一种字母,那么可以构造(|01|^k),这样子一定能选出题目给出的子串。
C
题目的式子在(pmod {ab})意义下和在原情况下是等价的,所以可以每次算出(0-ab)的答案,然后做一个前缀和,每次(O(1))统计答案即可。
D
做法应该很多,考虑一种比较直观的方法:
设(S_i)表示大于等于(i)的数的个数,根据鸽笼原理,显然最少要分(lceil frac {S_i} {c_i}
ceil)组,所以就可以得到第一问的答案了。
对于第二问,直接按照数字大小排序均匀放入各个背包中即可。
E
待补。