NOIP2024集训Day58 字符串

NOIP2024集训Day58 字符串


C. [CEOI2011] Matching

发现要做的是排名串的匹配。

考虑把它转成这个位置之前有多少个数小于当前这个数,这样就只要每个位置都对应相等的,那就一定是合法的。

然后就可以类似 KMP 的预处理出一个 nxt 数组,然后再类似 KMP 的匹配。

因为需要支持动态求前面一段区间有多少个数比这个数小,所以需要用树状数组维护。


E. [POI2005] SZA-Template

有个结论,一个字符串的印章一定是它的 border,因为只有这样才可能兼顾首尾,但是反过来就不行,也就是说一个字符串的 border 一个字符串的印章。

fi 表示前 i 个字符串的最小印章长度。

fi 的取值只有可能是 ifnxtii 就是取自己为印章,fnxti 表示先将它的 border 想办法填出来,再在末尾加上剩余字符。

什么时候能从 fnxti 转移过来?

先找到一个最大的 fj=fnxti,由于在 j 后面我们至多填上 fnxti 长度的字符串,所以当 ijfnxti 时,可以转移。

对于一个合法的 j,维护一个 dp 值对应的最大下标即可。


posted @   Leirt_Abu  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示