CF1178F2

*2600

核心:每种颜色只会染色一次染色前的区间必定是单种颜色

把颜色相同的段先缩起来。因为他们一定会同时被选。

此时 m 还是很大,可以构造序列 [1...n] 一直重复。

考虑另外一个性质,一次操作类似 ODT 分析,最多会把边界位置加上 aiai+1 的情况。所以这样的位置上界为 2n

所以如果缩完点后的序列长度大于了 2n 一定不合法。现在我们有 m2n=103。非常好啊!

时限 6s 并根据 F1,我们进行区间 dp。优先考虑最先染的颜色位置集合 i1...ik

最先进行的操作是覆盖 [l,r] 满足 li1,rik。并且操作完之后发现变成了很多个子问题(因为染色要保证区间颜色相同,所以不能跨越,还有原因是跨越染之后那个跨越的点就变颜色了)。转移:

dp(L,R)=li1,rikdp(L,l1)dp(l,i11)dp(ik+1,r)dp(r+1,R)1p<kdp(ip+1,ip+11)

后面 prod 的部分容易快速得到,前面和 l,r 有关,考虑分成 [l,i1),(ik,r] 两个段,分别算 sum,最后乘起来即可。转移复杂度 O(m)

复杂度达到了惊人的 109,但是这是 CF 并且给了 6s。应该可以通过。

posted @   LCat90  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示