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))
\]
QwQwQ

人像一条河,流过的高低崎岖只是塑造了现在的你。但此刻开始的一个个岔路口的选择组成的链条才是未来的你。
浙公网安备 33010602011771号