Day8
首先看 \(T1\),发现其实就是从大到小把每个数字留一个,剩下都变成前缀最大的数列,因为可以发现,让前缀尽量大是最优的,然后调一调过了,看 \(T2\),先写了个每次询问都重新跑一遍的代码,时间复杂度是\(O(nlog(m)q*32)\),发现只能拿45分,怎么办呢我们发现似乎每次的 \(p[i]\) 对于我们的代码不太影响,可以先跑出来在计算,并且终点是固定的,我们考虑将终点变为起点,将每条边反着建,然后多源最短路,最终根据二进制位给答案计算出来,继续看 \(T3\),发现只会 \(20\) 分的做法果断跑路,看 \(T4\),一眼先要把每个数给自己的因子建边,但是答案怎么处理呢,发现我们可以给每个查询的左右两端都加到集合里面,然后在并查集合并的时候启发式合并,时间复杂度是 \(O(nlog(n) + a[i]log(a[i]))\)的,能过,只不过卡空间!!!!!!

浙公网安备 33010602011771号