省选模拟33


A. 传教

异或差分之后,需要操作的地方就是,按 \(\text{mod k}\) 分组后前缀异或和不为 \(0\) 的地方

考虑根号分治

\(k>\sqrt{n}\) ,则每次修改不超过 \(\sqrt{n}\) 个数,直接暴力做

\(k<\sqrt{n}\) ,那么那么考虑分块

修改的话相当于给一个后缀异或上一个数

每个块内存前缀异或和为 \(x\) 的值的个数,再维护一个区间异或的标记就好了

然后求出来为 \(0\) 的,再用总的减去

B. 方程

\(x=a+b\) ,那最后的结果就是 \(\frac{x^2-c^2}{xc}-\frac{x^2+xc+c^2}{c^2}\)

发现上下的次数都一样

那么可以先用 \(NTT\) 求出加和为 \(i\) 的方案数

\(\frac{x^2-c^2}{xc}-\frac{x^2+xc+c^2}{c^2}=-\frac{c}{x}-\frac{x^2}{c^2}-1\)

然后将 \(x\)\(c\) 分别用原根表示出来,再用 \(NTT\) 求出 \(\frac{x}{c}=g^i\) 的方案数

再去检验是否合法

C. 移花接木

咕咕咕