码迷,mamicode.com
首页 > 其他好文 > 详细

csp-s模拟47

时间:2019-11-04 09:44:02      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:长度   最小   条件   覆盖   inline   合并   csp   模拟   线段   

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

标签:长度   最小   条件   覆盖   inline   合并   csp   模拟   线段   

原文地址:https://www.cnblogs.com/Gkeng/p/11790258.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!