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即可。

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

时间: 2024-10-10 14:36:41

csp-s模拟47的相关文章

CSPS-S 模拟47

考试考得一般般,改题改到天昏地暗 T1 TLE10分, T2 TLE90,T3-不用说了(目前还没读懂题) 并列的有十个人 T1 Emotional Flutter 先把题意理解一下,千万不要按点来干,应该按照一个个长度为1的格来看,比如脚长为2时,占两格,脚尖部分(第二个格)不能在下一个黑条的第一个格上 所以先把脚长S(缩成脚后跟)整成一个格 1,只要把白条减去最后S-1个格(脚跟不能在这几个格里,但从后往前数的第S个格是可以放脚跟的),那么黑条的长度加上这S-1个格,表示脚跟不能在这个区域内

csp-s模拟47 Emotional Flutter,Endless Fantasy题解

题面:https://www.cnblogs.com/Juve/articles/11558523.html A:Emotional Flutter 如果起点确定,那么我们后面走的点都是固定的,及mod k余数相同 如果路径中有一个%k在黑块里,那么这个起点是不可行的 然后我们可以对于所有黑块,看它限制了哪些余数 最后我们要判断的就是有没有一个长度为s的连续区间,使得它没有被限制 #include<iostream> #include<cstdio> #include<alg

9月份总结(模拟34-50)

深夜发文 注意了这个,这一篇blog涵盖范围很广,并且不涉及任何题目知识的这个. 个人能力过于蒟蒻,但还因重度强迫症不想断掉blog,所以只能把过去一个月欠的东西用这一晚上总结一下, 先把一些没有发布的有用心得补一下 模拟41: 怕的就是麻木啊 考场上心态爆炸,T1没看懂???!!!!!虽然最后大概yy出来了出题人的意思,但是没想全,没过样例, 然后怀疑人生,似乎没了动力已经麻木, 模拟43: 对于想到的东西,一定要打上去!!!什么减枝的,对了就写 模拟47爆零纪念 问题:应该不算是“压宝”吧,

DFS/BFS(同余模) POJ 1426 Find The Multiple

题目传送门 1 /* 2 题意:找出一个0和1组成的数字能整除n 3 DFS:200的范围内不会爆long long,DFS水过~ 4 */ 5 /************************************************ 6 Author :Running_Time 7 Created Time :2015-8-2 14:21:51 8 File Name :POJ_1426.cpp 9 ******************************************

@CSP模拟2019.10.16 - [email&#160;protected] 垃圾分类

目录 @[email protected] @[email protected] @accepted [email protected] @[email protected] @[email protected] 为了保护环境,p6pou建设了一个垃圾分类器. 垃圾分类器是一个树形结构,由 n 个垃圾桶和 n-1 条双向传送带组成. 垃圾处理器的编号为 1, 2, ..., n,每条传送带都可以花 1 秒钟将垃圾从一个垃圾桶输送到另一个垃圾桶. 垃圾投放点是编号为 r 的垃圾桶,垃圾总是投放在这

【CSP模拟赛】Freda的迷宫(桥)

题目描述 Freda是一个迷宫爱好者,她利用业余时间建造了许多迷宫.每个迷宫都是由若干房间和走廊构成的,每条走廊都连接着两个不同的房间,两个房间之间最多只有一条走廊直接相连,走廊都是双向通过.  黄昏时候,Freda喜欢在迷宫当中漫步.每天,Resodo都会为Freda设计一个挑战方案.Resodo会指定起点和终点,请Freda来找到一条从起点到终点的简单路径.一条简单路径定义为一个房间序列,每个房间至多在序列里出现一次,且序列中相邻的两个房间有走廊相连.当起点和终点之间存在且仅存在一条简单路径

【csp模拟赛1】不服来战 (challenge.cpp)

[题目描述] 最近小 Z 和他的朋友都迷上了一款手机游戏:不服来战. 游戏的设定十分简单,在游戏开始时,会给出一排共 N 个灯,有的灯是开着 的有的是关着的,每个灯都有一个分数.而玩家可以进行任意次操作,每次操作 改变连续 K 盏灯的开关状态.尽管机智如小 Z 也总是没法得到最高分,没法把他 的朋友 PK 下来.于是他来向你请教,希望知道在不同情况下,最高分分别是多 少. [输入格式] 第一行,一个正整数 T,表示测试数据组数. 对于每组测试数据: 首先是一行两个正整数 N,K,意义如题目所述.

模拟测试47

T1: 题意: 有交替的N个黑白段,长度给定,一个人脚长S,步长K,可以从任意一点出发,问是否有一种方案,能够从第一个块之前走到最后一个块以后,并且脚不碰到任何一个黑色段. 题解: 我们可以将该问题在模意义下解决. 将每个黑色段的区间求出,左侧缩一的长度,右侧延伸脚长减一,这样将脚变成了一个点. 如果某个黑色段的长度大于K,那么一定无解.将所有的黑色段左右端点取模,特判黑色段被劈成两段的情况. 然后得到了一些区间,问题转化为0-K-1是否被全部覆盖,排序后单调指针扫一遍即可. 时间复杂度$O(N

2019.9.19 csp-s模拟测试47 反思总结

思路接近正解?都想到了?这都是借口呀. 没有用的,往前走吧. T1:Emotional Flutter 我的做法和题解不太一样,我把s放在最后考虑了. 因为出发以后步幅是一样的,所以每一个黑条可以ban掉一段出发点.把黑条的左右边界%k存成区间,每个黑条可以存一个或者两个区间[跨越k这个边界].然后像以前写区间覆盖的贪心一样按左端点排序,看看有没有长至少为s的空余. 代码: #include<iostream> #include<cstdio> #include<cstrin