T1
这个区间是一个等差序列(题目中给出
考虑用等差数列求和公式表示出原式子( )
推导下去:
这样,我们就只需要枚举 ,算出
就好了
T2
考虑题目要求的是字典序最小的方案
需要贪心地去放,头放的要尽可能地小
这样就可以用一个桶存下 中每个字符出现的次数
再算出 中每个字符出现个数的前缀和
这样就可以 求出该位是否能放某个字符了
判断方法就是看该位放了这个后后面能不能保证放出不同的
T3
因为这题求和公式中有绝对值
所以枚举 到
的复杂度是省不掉的
绝对值中减去的那个求和公式,实际上就是 的因数和
我们只要预处理出来就好了
用类似欧拉筛的方法,只不过找到一个值不是标记,而是给他的因数和加上
T4
其实就是最小生成树,但是问题在于这是一个完全图
考虑如何优化?
第一步优化:把倍数关系都缩为 个点,数值记为他们当中最小的点
第二步优化:删除一些一定不会用到的边
我们发现,如果 那我们取
时只能取到
假设有三个点 并且满足
虽然不能确定,但有
我们给出 种方案
- i<-->j<-->k
- i<-->k<-->j
- j<-->i<-->k
这三种方案的代价分别为
由于第一种方案是最优的,所以对于 ,和
连是最优的
与
相连根据实际情况而定
那我们就只需要枚举 ,找到最小的
满足
最后 和
连边即可
这样就少去了许多边,再跑最小生成树就好了