省选模拟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. 移花接木
咕咕咕