下笔春蚕食叶声。

Codeforces Round 1007 (Div. 2)

A

模拟一下,发现可能的观众的循环节是C,A/B,A/B

B

考虑递推,发现在 \(n(n+1)/2\) 为完全平方数的时候是无解的,影响了递推,那么 \(n+1\) 的时候就是 \(n-1\) 的答案再接上 \(n+1,n\)
检查一下,发现没有相邻 \(n\)\(n(n+1)/2\) 都为完全平方数

C

我完全没有构造水平。。不会。
我一开始的想法是 \(st-en\) 拉一条链,其他子树挂在链上,然后通过奇妙的策略(一棵树一定能回原点之类的),让老鼠在链上逐步由 \(st\) 移动到 \(ed\),但是最后也没想清楚。后来就去打uno了。。。

实际上“一棵树一定能回原点”的想法是正确的。我还是想复杂了。
题解做法是树以 \(ed\) 为根,按照 \(dep=n,n-1...,1\) 输出所有节点。
正确性证明:输出所有 \(dep=i\) 的节点的时候,老鼠的深度不会大于 \(i\)

D

D1

vp的时候也摆了。。
\(n=5\) 去试,发现 \(a_{2m}=a_{2m+1}\)
\(m > n\) 时,

\[a_{2m} = a_1 \oplus a_2 \oplus \ldots \oplus a_m = a_1 \oplus a_2 \oplus \ldots \oplus a_n \oplus (a_{n + 1} \oplus a_{n + 2}) \oplus (a_{n + 3} \oplus a_{n + 4}) \oplus \ldots \oplus a_m\\ a_{2m} = a_{2m + 1} = \begin{cases} p & \text{if } m \text{ is odd}, \\ p \oplus a_m & \text{if } m \text{ is even}. \end{cases} \]

这样可以 \(O(n+log_2 {m})\)
但是这种做法只适用于奇数 \(n\) ,如果是偶数的话 \(n++\) 向后推一位即可。

D2

D2和D1的区别在于由求 \(a_i\) 改为了求 \(\sum_{i=l}^r a_i\)
转化为求 \(\sum_{i=1}^m a_i\),记为 \(sum(m)\)
钦定 \(m \equiv 1 \mod 4\),如果不是就利用单次计算 \(a_i\) 来调整

\[a_1,a_2,...a_{n},...a_{2n-1},a_{2n}...a_{m}\\ a_{2n} = a_{2n+1} = p\\ a_{2n+2} = a_{2n+3}=p\oplus a_{n+1}\\ a_{2n+4} = a_{2n+5} = p\\ a_{2n+6} = a_{2n+7}=p\oplus a_{n+3}\\ ...\\ a_{m-1}=a_m = p\oplus a_{\lfloor \frac m 2\rfloor}\\ 令e = a_{n+1}+a_{n+3}...+a_{\lfloor \frac m 2\rfloor}\\ 令both=\sum_{i=2n,i全为偶数或i全为奇数}^m a_i\\ both = \begin{cases} e & \text{if } p = 0, \\ (\lfloor \frac{m}{2} \rfloor - n + 1) - e & \text{if } p = 1. \end{cases} \\ 考虑如何求解e, e = \sum_{i=n且i为偶数}^{\lfloor m / 2\rfloor} a_i = \text{sum}(\lfloor \frac{m}{2} \rfloor)_{\text{even}} - pre_{\text{even}}[n]\\ sum_{even} (x) = pre_{even}[2n-1]+a_{2n}+a_{2n+2}+...+a_{m-1}=pre_{even} [2n-1] + both\\ sum_{odd} (x) = pre_{odd}[2n-1]+a_{2n+1}+a_{2n+3}+...+a_{m}=pre_{odd} [2n-1] + both\\ sum(x)=sum_{even} (x) + sum_{odd} (x)\\ 复杂度O(n+\log (m)) \]

posted @ 2025-03-02 14:43  ACwisher  阅读(83)  评论(0)    收藏  举报