P3989 [SHOI2013] 阶乘字符串

P3989

bzoj #4416

  • 先考虑部分分,看到 n20 容易想到这个部分可以用状压
  • 起初可以设 dpS,i 表示在前 i 个数中选出集合 S 中的字母是否可行,转移即枚举下一个字母是什么
  • 这个 dp 有一个很显然的性质:他肯定是前缀一段 0 ,后缀一段 1 。我们不妨优化一下:设 dpS 表示选完集合 S 中的数的所有情况中距离最远的情况能选择的最近下标是什么。
  • 转移即记录 nxti,j 表示从 i 开始往后选第 j 个字母的最近距离,可以知道 dpS=maxxS{nxtdpSx+1,x}
  • 最终答案即为 [dp2m1n]
  • 然后 n26 呢?我们发现比较优秀的构造方案是 abcdcbabcd 这样,他的长度下界应该是 n2n+1 的。我们发现当 n=22 时, n2n+1=463>450 ,因此我们在 n22 时输出 NO 即可
  • 最终复杂度 O(T|S|2max(n,ω)) ,其中 ω=21
posted @   FOX_konata  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤
点击右上角即可分享
微信分享提示