【题单】wmr & wjr 第二次讲题
P10872 [COTS 2022] 移位 Maliand
\(ans=\left\lceil \frac{kl}{n} \right\rceil\),基于鸽巢原理。
构造:
\(S\) 的构造是前 \(k\) 个是 1。
\(T\) 的构造是平均分,那么每个位置有 \(\frac{l}{n}\) 个 1,前 \(i\) 个中有 \(\frac{il}{n}\) 个 1。做差分即可得到答案构造。
CF1394E Boboniu and Banknote Collection
结论:三折叠一定是不劣的,有三折叠就折。
- 引理 1:双折叠的回文重心若存在被另一个双折叠串包含的情况,则两个回文串中心之间可以构成一个三折叠。
- 引理 2:最小三折叠一定只包含一个偶回文后缀。否则会存在一个更小的三折叠。
上述两个引理可以证明结论。
增量构造答案。每次加入一个字符 \(c\),只需要考虑后缀的三折叠。由引理 1 只用每次考虑最小的偶回文后缀是否构成一个三折叠,并且折完以后不用继续折三折叠。
对于多个双折叠,我们先翻较小的,因为较大的还可以再翻一次。由引理 1 前后缀是互不影响的。
对于折后缀可以记忆化。
折前缀记当前折到了 \(p_i\),则能折当且仅当 \(p_i\) 这个后缀是回文串。注意这时候就要对答案 -1 了,因为前后缀都可以统计到这个串。
对于维护后缀回文串,由引理 1 只会有 \(\log n\) 个回文后缀,维护他们即可。
时间复杂度 \(O(n\log n)\)。
P14475 大鱼吃小鱼
称区间和 \(<k\) 的区间是小鱼区间,\(\ge k\) 的是大鱼区间。
先把整个序列是小鱼区间的判掉。
一条鱼在小鱼区间时必须使用道具。考虑第一次到极小大鱼区间,前都是使用道具的。
而极小大鱼区间只有 \(O(n)\) 个,我们求出他们的答案后更新每条鱼的答案。
对于大鱼区间,只有 \(a_{l-1},a_{r+1}\) 都不能吃的才一定要使用道具。称这样的区间是自闭区间。令 \(a_0=a_{n+1}=\infty\),故 \([1,n]\) 也是自闭区间。
- 引理 1:自闭区间只有 \(O(n)\) 个。
- 证明:考虑 \(a_{l-1},a_{r+1}\) 中较小者,不妨令他是 \(a_{l-1}\),则只有第一个比他大的 \(a_{r+1}\) 可能成为自闭区间,否则一定可以吃掉 \(a_{l-1}\) 从而不是自闭区间。
- 引理 2:自闭区间只存在包含或相离关系。
- 证明:若相交,则一定产生矛盾了。
那么可以使用单调栈求出所有的自闭区间,然后根据包含关系建出一棵树,在树上求深度即是所有自闭区间的答案。
对于每个极小大鱼区间求出他的答案,最后用单调队列更新所有鱼的答案即可。
浙公网安备 33010602011771号