太好了。没有交题权限不用补题了。弥天大雾
【ZYB Loves Graph】一张G(n,m)的无向图,每次操作可以翻转一段连续编号区间内的边的状态(1变0,0变1),也可以询问两个点的S(u) S(v)是否相等,S(x)代表点x的所有相邻点的集合。这是我听完直播以后最最想写的一个题。
可以给每个点随机一个权值,直接将S(x)转化成异或和的形式。每次修改操作,是在树状数组上面区间修改(xor)。
将每个点按照度数分成大点与小点。询问小点,则暴力询问它的每一条边的存在性。对于大点,在每次操作的时候暴力修改它的S;这样无论大小点都多了一个log。
“数据其实没有特意卡log”,但是还是要考虑把复杂度“匀一匀”。将边序列分块,这样每次询问到小点可以变成O(1)出结果。操作时候还需要维护所有块对于每个它能影响到的大点的贡献(只操作零碎块,但需要预处理出大块翻与不翻对大点的影响),询问到大点时,枚举所有的块,将贡献异或起来。
【Guessing ETT】端看了一会儿题解,发现ppt有一个地方写错了。现在就变成:理解了出题人的构造方法但没法证明它的100%正确性。不过反正也想不出其它的构造方法hhh
其实最好的方法还真的是写个贪心拍一拍。
【Removing stones】可以证明题目等价于,有多少个长度不小于2的连续子数列,使得其中最大值<=sum/2。
对于区间[L,R],找出里面最大值的位置K,枚举较短区间为一端点,二分另一边。然后递归分治[L,K-1] & [K+1,R],这样的复杂度是两个log的。
题外话( 被指路咖啡鸡的代码,怎么都不应该是线性做法。。。。。。
【Median】需要发现任何一组合法解经过修改,都能够使得每一个a[i]都是受其影响的三个中位数之一。那这样就可以dp了。
枚举第i位与第i-1、i-2位的所取数字。疯狂的分情况讨论。复杂度是线性的。