www 被大佬们吊打了,尤其是zac2010>.<|

wscqwq

园龄:2年粉丝:2关注:3

AlmostSorted

[ARC132C] Almost Sorted

本题的状压并不是很明显,但是因为 d 很小,所以应该想到。

可以用差值来设计状态。

f[i][j] 表示填完前 i 个数,目前 [d,d] 的差值中可用的状态为 j(对于 i+1 而言)的方案数。

考虑枚举上一个位置:

  • i 个位置选的数不能再上一个位置的集合中出现
  • 需要保证现在选的数是可以选到的,即要么这个位置随意填数,要么这个位置本来就是要填的数
  • 不越界

满足以上条件之后,就可以进行状态转移了。

f[i][(j | (1<<(d+k))) >> 1] = (f[i][(j | (1<<(d+k))) >> 1]+f[i-1][j])%mod

其中的 k 是枚举的新入的数,需要 d 的偏移,然后加入 j 集合。然后因为是下一个位置,所有的 pii 集合需要减小 1>>1 即可。

答案是 f[n][2d1],因为前 n 个数均填完,所以 [d,1] 范围内的数均已填过。

复杂度 O(n22d+1)

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17575667.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(26)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起