csp-s模拟100
T1:
把字符看作点,单词看作边,那么就是有向图和无向图两种情况
考虑要使用所有的词,即:经过所有的边
那么就变成了一个欧拉路的问题
T2:
考虑每次取出一个数会消除它与它后面的所有数构成的逆序对
且每个数只会消除一次
那么每次查询后面最小的数取出并减去它造成的影响即可
T3:
毒瘤题
随机的树我真的是服了
考虑树随机有什么性质:只有log层左右
那么log有什么用?可以装压(\(2^{log_2n}=n\))!!!
发现祖先的情况会影响贡献的计算
那么我们就将祖先的子树中,点亮的点的数量是否大于等于没有被点亮的点的数量作为状态,进行装压
在考虑当前点的时候,直接根据祖先情况计算贡献,这里并不用保证状态合法
当回溯的时候,我们只截取合法的一半传回向上转移即可