T1
首先写出来复杂度不太对的记忆化搜索
然后就卡在不太会这个组合数转移了
但是其实是自己想多了,并不需要组合数转移
这四个数有顺序的
所以直接 (O(n^2)) 算出来两维的答案,然后再积一下就行了
或者其实本质上这题目就是个生成函数
质数位置加上 (1) 然后暴力 双模(NTT/FFT) 即可
快忘记 (FFT) 咋写了……
T2
首先这题目考试的时候发现不太可刚就没做,打了 (60pts) 就走人了
最后还挂掉了 (10pts)
具体做法应该是考虑最高位带来的差异
考试的时候没有入门的思路,其实这东西从 (0/1 trie) 的角度可以得到
如果最高位分开之后两边的同位置的数字一样,那么区间的答案就是 (2 imes calc(l,mid))
如果左边和右边的数字有交集但是不是对应位置一样,那么没答案,返回 (0)(必然冲突)
剩下的没交集就分治就行了
比较巧的入手和分析
思路确实积累了
T3
考试的时候确实没有想到可以这样做
不过这题目确实太树剖了
考虑一条边是黑色的条件是这个边的两个端点分别被两个修改覆盖过
按照树点涂色的手段初始化一下
那么每次修改扔一个时间戳,最后统计链上有多少种不同颜色即可
代码并不好写,有和爬树那题目类似的处理方式
T4
好像需要用到对于重链维护平衡树的相关知识了,并不会写