AGC12C Tautonym Puzzle

AGC012C Tautonym Puzzle

考虑在 AA 的前 100100 位递增地填上 11001 \to 100

如果我们限制 AA 的后 100100 位里,11001 \sim 100 每个数最多出现一次。后 100100 位可以不填满。

那么 AA 中好的子序列数量,就是后 100100 位里严格上升子序列的数量。

问题转化成:构造一个序列 BB

  • 11001 \sim 100 每个数最多出现一次。
  • 严格上升子序列数等于 NN

构造方式如下:

枚举 xx11001 \to 100,将 xx 插入 BB 中。

xx 插入 BB 的后侧,会让 BB 的严格上升子序列数 ×2\times 2

xx 插入 BB 的前侧,会让 BB 的严格上升子序列数 +1+1

NN 二进制拆分即可。上面的 xx 最多运行到 2logN2\log N 就能构造成功了。

构造出来的 BB 长度 2logN2\log N,对应 AA 的长度 100+2logN100 + 2\log N

如果最开始的时候只将这 2logN2\log N 个数递增地放在 AA 的最开始,可以做到串长 4logN4\log N

构造时间复杂度 Θ(logN)\Theta(\log N)

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