超长序列计数从值域入手(判定转状态)+分析DP状态数量:arc146_e
超长序列计数从值域入手(判定转状态)+分析dp状态数量:arc146_e
本文搬运自本人高中时期CSDN博客,若图片加载不出来,可到原文查看:https://blog.csdn.net/zhangtingxiqwq/article/details/132794937
https://atcoder.jp/contests/arc146/tasks/arc146_e
Trick1 超长序列从值域入手(判定转状态)
通过绝对值的条件,其实我们可以从小到大放每个数。
对于两个相邻的同样数 ,他们之间必须放
因此可以设计 表示前 个数,第 个有 个相邻的,左右两边有多少个为
Trick2 分析dp状态数量
此时状态是 的。
但观察dp的转移过程很单一,相邻之间的转移相差也就1,而且第三维是类似一种层数的东西,只能从高层到低层。
此时大胆猜测状态数并不多。手玩一下可以发现,在第一、三维确定时,第二维的取值只有 3 种,然后记搜就完事了
1 | int dfs(int i, int o, int k) { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhangxixi的博客!




