做题记录 25.3.29
\(\textcolor{blue}\odot\) CF1967C Fenwick Tree
先考虑正向操作
对 \(a\) 的一次 \(f\) 变换相当于每个结点将自己的值累加到所有祖先上(这个操作是同时进行的,相当于对这条链做前缀和)
若做了 \(k\) 次变换,\(u\) 对其 \(t\) 级祖先的贡献次数相当于一个数组初始 \(p_0=1\),做 \(k\) 次前缀和后 \(p_t\) 的值,可知为 \(\binom{k+t-1}t\)
从左到右枚举结点,枚举父亲将贡献消除即可
注意组合数的处理
时间复杂度 \(O(\sum n\log n)\)
\(\textcolor{blue}\odot\) CF1965C Folding Strip
结论:当相邻两个字符相同时,中间需要翻折以下
模拟这个过程是容易的,考虑如何证明
对于长度 \(>2\) 且为奇数的同色连续段显然,对于长度 \(>2\) 且为偶数的同色连续段,除了第一个间隔外显然
这样只需要考虑长为 \(1/2\) 的连续段
从左到右考虑每个长为 \(2\) 的连续段,吗,每遇到一个,就从右边向左边翻转,这样时刻保证已经处理完的部分是 \(0/1\) 间隔的,且显然长度最小(若不翻转,则只能把多余部分延伸出去,显然不优于翻折起来)
时间复杂度 \(O(\sum n)\)

浙公网安备 33010602011771号