20230922

发布时间 2023-09-23 13:58:07作者: programmingysx

20230922 NOIP#13(33daiOJ)总结

时间安排

7:40~8:00

\(A,B,C,D\)\(A\)\(C\) 一点不会。

8:00~8:10

\(D\)\(10\) 分。

8:10~9:00

\(B\) 一边写一边想,写了50。

9:00~10:10

别的想不到了,但是秉持不能不写的原则乱搞各个题。

10:10~11:30

\(B\) 对路径的处理有了新的想法,尝试实现,但是没调完。(虽然最后被证伪了

11:30~11:40

检查文件。

总结反思

  • 加快写题调题速度
  • 构造题不太会

题解

A.勾股数

勾股数通项公式为 \((m^2-n^2)^2+(2nm)^2=(m^2+n^2)^2\)
\(a\) 为偶数时 \(m=1\ \ n=\frac{a}{2}\)\(a\) 为奇数时 \(m=\frac{a+1}{2}\ \ n=\frac{a-1}{2}\)

B.树的直径

离线做加边并用并查集维护是套路。
距离一个点最远的点一定在直径的一个端点上,所以维护所有块的直径即可,合并时新的直径一定在原来的4个点中产生。

C.按位贪心

考虑与运算后 \(1\) 的个数为奇数转化为 \(v_i\times (-1)^n\)
此时从小到大枚举位数,将最高位为这个的 \(v_i\) 加起来,此时如果总和为正,则该位选 \(1\) 更优,然后将 \(mask_i\) 该位为 \(1\)\(v_i\) 全部取反即可。

D.数位之和

\(\forall x<10^{18}\ \ f(x+10^{18})=f(x)+1\)
\(solve(1,10^{18})\%a=p\) ,则 \(L=1+(a-p)\ ,R=10^{18}+(a-p)\) 即可。(\(solve(1,10^{18})=81\times 10^{18}+1\)