A. Ring
几乎是原题。
发现对于一个确定的左端点,必然存在一个分界点r,使得所有右端点>r的区间都存在环,其余都不存在。
考虑这个东西具有单调性,所以用双指针就可以实现这个过程。
那么剩下的问题就是动态维护图的连通性,使用LCT即可。
B. Exchange
发现主要的问题在于2操作。
观察这个东西,可以发现修改的区间长度非常奇怪,都是2的整次幂,那么不难想到使用线段树。
若将线段树的总长度扩展到2的整次幂,那么每个节点所代表的都是一段长度为2的整次幂的区间,那么对应的交换操作只需要交换线段树上的两个节点就可以了。
C. Match
神仙题?
首先把方差的式子换一下,变成了n*平方和-和的平方。
对于第一部分,直接枚举每种权值出现的次数乘上对应权值的平方即可。
对于第二部分,将式子展开之后将贡献分为两部分,一种是平方项,另一种不含平方。
对于平方项,贡献与第一部分相同。
对于非平方项,可以写成和的平方的形式。注意到这样会算重,因为若两个配对方案含有相同的元素,那么他们之间不可能存在贡献,所以需要减掉。
注意有些东西会被减两遍,所以要再加回来。
于是可以暴力的O(n)计算了。 然后展开式子用自然数幂和就可以O(1)得到答案。
由于展开太麻烦,所以更好的办法是插值或者高斯消元。