A,B
咕了。
C - Water Balance
先考虑最小化第一个位置。考虑包含第一个位置的最后一次操作\(a\),以及前一次和他有交集的操作\(b\)。容易看出操作\(b\)如果不被\(a\)包含就不优,而既然被包含了就可以删掉。
所以可以证明第一次操作必然包含第一个位置,并且以后的操作不会再包含第一个位置。
如果第一次是\([1,r]\),那么显然\([2,r]\)的数不会再变小,因为如果还能变小就说明第一次操作不是最优的。
所以就是每次操作一个前缀之后就删掉。显然建出\((i,sum_i)\)的凸包就完事了。
代码:https://codeforces.com/contest/1299/submission/73880533
D - Around the World
众所周知,环的权值可以拆成若干个关于dfs树的环的权值异或和。
既然是异或,那么显然一个连通块贡献的异或值应该被存在一个线性基内。
考虑一个与1相连的连通块。如果只有一条边相连,那么断掉就贡献空集,连上就贡献连通块内的线性基。如果有两条边\((1,u),(1,v)\)相连,那么可以贡献空集、连通块内的线性基、再带上一个\((1,u)\oplus (1,v)\oplus (u,v)\)的线性基。
爆搜可以发现本质不同的线性基只有374种,并且可以预处理两个线性基合并的结果,于是\(dp_{i,s}\)表示前\(i\)个块线性基是\(s\),可以\(O(1)\)转移。
代码咕了。
E - So Mean
我是题解的搬运工……
考虑\(sum=\frac {n(n+1)} 2 = 1\pmod {n-1}\),所以询问\(n-1\)个位置得到1当且仅当被抠掉的位置是\(1\)或\(n\)。
知道了\(1\)和\(n\),就可以知道每个位置的奇偶性。
如果用上面的方法接着往中间推,询问次数会爆炸,我们需要更好的方法。
考虑CRT,我们求出每个位置模\(3,5,7,8\)的余数。
先把\(1,2,3,4,n,n-1,n-2,n-3\)的位置给求出来。
对于模3,询问\((1,2,x),(2,3,x)\)可以求出来。
对于模5,询问\((1,2,3,n,x),(1,2,4,n,x),(1,3,4,n,x),(2,3,4,n,x)\)可以求出来。
对于模7,询问\((2,3,4,n,n-1,n-2,x),(2,3,4,n,n-1,n-3,x),(2,3,4,n,n-2,n-3,x),(2,3,4,n-1,n-2,n-3,x),(1,3,4,n-1,n-2,n-3,x),(1,2,4,n-1,n-2,n-3,x)\)可以求出来。
我们先把模4求出来。由于奇偶性已经确定,对偶数问\((1,2,3,x)\),对奇数问\((1,2,4,x)\)。
把\((1,2,3,4,n,n-1,n-2,n-3)\)中的\(1,2,3,4\)某一个替换成\(x\),可以得到模4的4种余数,以此再加上已知一个位置模4的余数,就可以确定模8的余数。
于是做完了,询问次数大概是\(15.324n\)。
来源:https://www.cnblogs.com/p-b-p-b/p/12541690.html