csp-s模拟47
Posted gkeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了csp-s模拟47相关的知识,希望对你有一定的参考价值。
T1:
考虑每个黑条的限制范围其实是一个区间,于是把脚长的限制计算在里面后去掉
而每次只能走k,所以可以在模k意义下进行线段覆盖
若全覆盖则无解,否则有解。
(注意若某一个黑条第限制区间大于k,则一定无解)
(还要注意若一个黑条跨越了模k的序列,则需要拆成两个)
T2:
暴力线段树合并就完了
T3:
kmp处理出原串的t集合
考虑实际上问题就是:构造一个字典序最小的01串使其与原串的nxt数组某些位置相同
考虑当满足第i个限制后如何满足第i+1个限制
设(delta=len_{i+1}-len_i)
若(delta<len_i),则为满足nxt的限制,直接复制delta长度的后缀接在后面即可
若(delta>=len_i),则复制该串放在最后,中间补0即可。
但这时可能会不满足条件,所以当新串的kmp跑到(len_{i+1})时需要判断一下,若不满足限制,则将中间补的0的最后一位i改为1即可。
以上是关于csp-s模拟47的主要内容,如果未能解决你的问题,请参考以下文章