00:00:00
括号序列相关计数 笔记
括号序列有一种做法,每次从最外层第一对配对的括号进行转移。
即对于区间
1. CF1781F Bracket Insertion
对括号序列合法的定义进行转换:设
于是考虑笔记开头说的转移方式,设
考虑最终生成的括号序列,最外层的第一对括号。
的形式,其中红色是左括号统领的,前缀和增加
插入
状态数
考虑优化,以第一种转移为例,考虑枚举
后面的
这里还少考虑了个操作顺序的问题,因为当有多个部分转移过来时,不好处理操作总顺序,但是优化完后我们的代码一直都是从两个部分转移,假设一个部分大小为
时间复杂度
2. CF888F Connecting Vertices
这个可以看作类括号序列问题,主要的思想还是一样的。
不复制并破环为链不影响答案。根据题意,发现所有的连边一定是包含或相离关系(称
直接区间 DP 不对,因为和括号序列一样,会在
于是考虑钦定最外层第一个配对的位置进行转移,设
于是考虑最外层第一个连边,有两种情况:
- 最外层第一对是
直接连边,于是在 中枚举断点转移即可。
- 最外层第一对是
,那么就是两个区间拼起来。
时间复杂度是区间 DP 的