A
拆位算贡献,枚举每一个位置,与操作两者都是 \(1\),异或操作相反,或操作有一个是 \(1\) 即可。
B
观察到条件 \(a_1\le k\) 证明是必然有答案的,答案这样构成:从 \(1\) 走到任意点 \(j\),然后 \(j\) 挖空,然后推到 \(i\),记 \(f_i\) 为从 \(1\) 走到 \(i\) 的最小花费,答案 \(i\) 即为 \(f_j+h_j+2\times |i-j|\),问题变成求 \(f_i\),先把 \(h_{i-1}-h_i\) 塞进线段树里,然后转化成一堆数,每次可以将一些数减去 \(1\),使得它们的平方和小于等于某个数,一个比较基础的贪心策略就是每次选最大的然后减去 \(1\),这个显然会超时,不妨考虑这样最后造成的结果,就是一堆数都是最大值 \(x\),然后又有一些是 \(x-1\) 这种,所以可以直接二分这个最大值 \(x\),然后 check 一下是否是在一个界限范围之内的,当然找到这个 \(x\) 后,有些 \(x\) 是可能变成 \(x+1\) 的,二分一下即可,复杂度为 \(\mathcal{O}(n\log n)\),但是常熟很大。
C
大样例太水了导致挂分的,愣是 7 个大样例都没查出来问题,具体做法是城市建设那道题类似的,与 \(q\) 相关的边很少,将与 \(q\) 相关的边先设为 \(\text{inf}\),然后跑一遍最小生成树,此时没有被选择的边且与 \(q\) 不想关的边在后续决策中也一定不会出现。然后将于 \(q\) 相关的边设为 \(-\text{inf}\),然后跑一遍最小生成树,此时被选择的边且与 \(q\) 不想关的边在后续决策中一定出现,将它们记录下来。将上面两种边排除发现边就已经很少了,然后 \(2^q\) 枚举一下限制选哪边,注意与 \(q\) 相关的边也应该加入计算。
D
不会捏。
标签:大样,19,text,然后,NOIP2024,inf,边且,模拟 From: https://www.cnblogs.com/BigJoker/p/18516001