十重回文划分法:最多/最少(非平凡)回文/非回文 子序列/子串 划分
只考虑常数字符集,所以关于字符集的复杂度都没算进来。
最少非回文子串划分
答案是 或 或者无解,参考 CF1951E 的题解。
时间复杂度:。
最少非回文子序列划分
考虑最少非回文子串划分的情况,可以发现答案是 的情况也不可能划分成 个子序列,所以和上面是一样的。
时间复杂度:。
最少回文子串划分
容易有一个 dp,这个 dp 可以用 PAM slink 优化做到 。参考做法是 CF932G,这个题是数偶回文划分的方案数(当然要先用一步倒着间隔插的 trick 把 border 划分转回文划分),可以直接改成数回文划分的 。
网上介绍这个的资料很多。
时间复杂度:。
最少回文子序列划分
目前的一些进展:
- 一个字符串的最长回文子序列的长度是它和反串的 LCS 长度(存疑,但是没有找到反例)。
- 每次找出最长回文子序列删去继续找,可以得到最小划分(存疑,倾向于不正确)。
- 显然不能区间 dp。
- 答案显然不超过字符集大小。
这个真的有小于指数级的做法吗……
尝试了网络流,也无法解决。
事实上 clj 在 2013 年的 HDU 多校出了这题 HDU4628 Pieces,复杂度只做到了直接子集 dp 的 。
最多非回文子串划分
贪着做,两个字符不相同就在后一个字符后面划一下,这样最后可能会剩下一段,前面的都形如 。显然这样做是上界,因为一个非回文子串至少需要两个不同的字符。
这样的问题是最后一段不一定能合进去还保证最后一个串非回文。你考虑倒着再做一遍。如果还不行的话就要考虑调整方案了。
此时可以发现,最后三个划分合并在一起一定要么不是回文串,要么不可能是一个除中间外都相同的 式的回文串,按照最少非回文串划分的结论,这种一定回文串一定可以切分成两个非回文串,所以答案就减掉一。
大概需要特判一下初始划分数 的情况。
时间复杂度:。
最多非回文子序列划分
时间复杂度:。
最多回文子串划分
奶龙题,输出 。
时间复杂度:。
最多非平凡回文子串划分
不允许串全为同一个字符。
还没想。
最多回文子序列划分
奶龙题,输出 。
时间复杂度:。
最多非平凡回文子序列划分
不允许串全为同一个字符。
还没想。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现