noi.ac 字符串游戏】的更多相关文章

题面 Zhangzj和Owaski在玩一个游戏.最开始有一个空的01串,Zhangzj和Owaski轮流进行操作,Zhangzj先走.每次进行操作的人可以在串上任意位置加一个新的字符,由于串是01串,新加的字符也只能是"0"或者"1". 他们事先约定好一个字符串\(s\),如果在任意时刻,这个字符串包含\(s\)作为它的一个子串,那么Zhangzj获胜.现在给定\(s\),假设Zhangzj和Owaski均按照最优策略进行操作,你的任务是判断Zhangzj能不能在有…
题目链接:戳我 可以知道,我们相当于是把有宝藏在的地方围了一个圈,求这个圈最小是多大. 显然按照dfs序来遍历是最小的. 那么我们就先来一遍dfs序列,并且预处理出来每个点到根的距离(这样我们就可用\(dis[u]+dis[v]-2*dis[lca(u,v)]\)来表示u,v之间的距离) 怎么动态维护这个东西呢?平衡树?不存在的,开一个set就行了.每次维护一下添加或者删除产生的影响就行了. 相似的题目是noi.ac#460 tree-- 给你一棵n个点的树,每个点都有一个颜色ci. 有m次操作…
Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其 他一些字符串的集合S,然后他可以进行以下操作:对于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删除,如果删除,则将删除后L 分裂成的左右两部分合并.举个例子,L='abcdefg' , S={'de'},如果BX选择将'de'从L中删去,则删后的L='abcfg'.现在BX可以进行任意多次操作(删的次数,顺序都随意),他想知道最 后L串的最短长度是多少. Input 输入的第一行包含一个字符串…
题目传送门:http://noi.ac/problem/31 一道思路好题考虑模拟$Kruskal$的加边方式,然后能够发现非最小生成树边只能在一个已经由边权更小的边连成的连通块中,而树边一定会让两个连通块合为一个,故考虑以连通块为切入点设计$DP$设字符串$s_1s_2s_3...s_i,s_1 \geq s_2 \geq s_3 \geq ... \geq s_i$表示某一个图中各个连通块的大小(可以发现我们只关心连通块有多大,但不关心连通块内具体有哪些点,因为当所有连通块大小一一对应的时候…
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不相同.\(q(q\le5\times10^5)\)次询问,每次给出\(x,y\),询问有多少数满足在本行是第\(x\)大,在本列是第\(y\)大. 思路: 对每行.每列分别排序,求出每个数是本行.本列第几大.然后即可预处理答案. 时间复杂度\(\mathcal O(n^2\log n)\). 源代码…
2121: 字符串游戏 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 672  Solved: 376[Submit][Status][Discuss] Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删除,如果删除,则将删除后L分裂成的左右 两部分合并.举个例子,L='abcdefg' , S={…
noi.ac上的一套(假)NOI题 本来想着可以刷点通过量的,结果发现好像并不是这样的. 整数 description 给你\(n,p\),要你求\(\sum_{k=1}^n\sum_{i=1}^k\sum_{j=1}^k\gcd(i,j,k) \mod p\). \(n\le3\times10^8\) sol \[\sum_{k=1}^n\sum_{i=1}^k\sum_{j=1}^k\gcd(i,j,k)=\sum_{d=1}^nd\sum_{k=1}^n\sum_{i=1}^k\sum_{…
正题 题目链接:http://noi.ac/problem/2144 题目大意 给出一个字符串\(s\)和一个序列\(a\).将字符串\(s\)的所有本质不同子串降序排序后,求有多少个区间\([l,r]\)使得子串\(s_{l,r}\)排名等于\(a_{l\sim r}\)的和. \(1\leq n\leq 2\times 10^5\) 解题思路 因为是降序排序,所以每加一个字符排名是在下降的,而\(a_i\)的和又是不降的,所以对于每个左端点最多只有一个右端点,且可以考虑二分求出这个位置. 如…
NOI.AC省选赛 第五场T1 A. Mas的童年 题目链接 http://noi.ac/problem/309 思路 0x00 \(n^2\)的暴力挺简单的. ans=max(ans,xor[j-1]+xor[j-1]^xor[i]); 01trie树求最大异或和相信大家都会.不会看这里. 这与我们今天这个题目有关吗? 毫无关系. xor[i]的某一位为1,xor[j]的那一位不管是啥,贡献都是为1. 而xor[i]的某一位为0,xor[j]的贡献是2或0.(xor[j]位上为1贡献为2) (…
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出现一次. 对于每一个正整数\(k=1,..,n+1\),求出的本质不同的长度为\(k\)的子序列的数量.对\(10^9+7\)取模. 思路: 由于只会有一个数会重复,因此考虑重复的这个数取\(0\)个.\(1\)个和\(2\)个的情况,用组合数直接算即可. 源代码: #include<cstdio>…
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下.左.右.左上.左下.右上.右下这\(8\)个方向移动.其中每一个皇后可以攻击这八个方向上离它最近的皇后. 求有多少皇后被攻击到\(0,1,\ldots,8\)次. 保证\(m\)个皇后中任意两个不在同一个位置. 思路: 考虑左右方向的攻击,对每一行开一个set,按列编号插入,看一下是否存在前驱/后…
NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]ImpossibleGame…
NOI.AC NOIP模拟赛 第一场 补记 candy 题目大意: 有两个超市,每个超市有\(n(n\le10^5)\)个糖,每个糖\(W\)元.每颗糖有一个愉悦度,其中,第一家商店中的第\(i\)颗糖果的愉悦度为\(A_i\),而第二家商店中的第\(i\)颗糖果的愉悦度为\(B_i\). 在每家商店买的糖果会被打包到一个袋子中(可以在一家商店什么都不买,此时认为这家商店的袋子为空).因为这两个袋子外观是一样的,所以会从两个袋子中随机选择一个,然后吃光里面的糖果.定义一种买糖果的方案的愉悦度为:…
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\(w_i\)的代价.现在要通过删去一些边,使得剩下的满足对于这个图的任意一些点,这些点之间互联的边数小于这些点的总点数.求总代价最小值 思路: 不难发现答案为整张图代价和-最大生成森林代价和. 时间复杂度\(\mathcal O(m\alpha(n))\). 源代码: #include<cstdio…
4C(容斥) http://noi.ac/contest/56/problem/25 同时交换一行或一列对答案显然没有影响,于是将行列均从大到小排序,每次处理限制相同的一段行列(呈一个L形). 问题变成,决定这个L形中每个位置的高度,是每个位置都不超出所在行列的限制,且每行每列都有至少一个位置达到最高限制. 容斥,暴力枚举有多少行多少列没有任何一个位置达到最高限制,这些行列中的位置都只能取到0~h.其余L形中的位置都无限制,即能取到0~h+1. #include<cstdio> #includ…
题目:http://noi.ac/problem/32 从全是0和1的情况入手,可以像线段树一样分治下去,回到本层的时候就是左半部的右边是1,右半部的左边是0,把这两部分换一下就行.代价和时间一样是nlogn. 不全是0和1,可以像快速排序一样,先找一个基准,然后小于它的是0.大于它的是1,调用上一行的那个函数:本层弄好0和1以后,递归到全是0的部分和全是1的部分即可.这样代价和时间都是nlog^2n. 那个基准找得不好的话,一不小心就陷入死循环.所以自己还专门unique了一下,确保不会递归到…
题目:http://noi.ac/problem/31 模拟 kruscal 的建最小生成树的过程,我们应该把树边一条一条加进去:在加下一条之前先把权值在这一条到下一条的之间的那些边都连上.连的时候要保证图的连通性不变. 已经加了一些树边之后,图的连通性是怎样的呢?这可以是一个整数划分的问题.据说方案只有4万多,所以可以搜一下,搜出有 k 个连通块的方案数. 为了转移和转移时算方案数,还要记录每个方案的:各个连通块的点数,所有的空位(可放边)数. 可以用 map 来存状态. map 的角标是一个…
3  字符串游戏(strGame.c/cpp/pas) 3.1  题目描述 pure 和 dirty 决定玩 T 局游戏.对于每一局游戏,有n个字符串,并且每一局游戏由K轮组成.具体规则如下:在每一轮游戏中,最开始有一个空串,两者轮流向串的末尾添加一个字符,并且需要保证该串为n个字符串中任意一个串的前缀,不能操作的人输掉这一轮,并且在下一轮游戏中由该轮输掉的人先手.另外为了遵循女士优先的原则,在每一局游戏的第一轮均由 pure 先手. 玩家的目标是获得整局游戏的胜利,一局游戏的胜利条件是:对手输…
题目:http://noi.ac/problem/31 好题啊! 题意很明白,对于有关最小生成树(MST)的题,一般是要模拟 Kruskal 过程了: 模拟 Kruskal,也就是把给出的 n-1 条边一条一条加进去,那么就要枚举每次连接了哪两个连通块(点集): 于是需要记录连通块情况,这样加一条边就相当于一种情况到另一种情况的转移,就可以DP: 记录连通块情况较为复杂,而且还要注意不重复等等... 但实际上,我们在转移时,并不需要知道连通块中有哪些点,只要知道连通块的大小即可(从n个1开始转移…
题目链接:http://noi.ac/contest/12/problem/37 题目: 小W收到了一张纸带,纸带上有 n个位置.现在他想把这个纸带染色,他一共有 m 种颜色,每个位置都可以染任意颜色,但是他发现如果某连续 m 个位置被染成了 m 种不同的颜色,那么就不美观,于是他决定让任意的相邻 m 个位置的颜色至少有两个位置相同.他想知道他一共有多少种染色的方案. 输入格式 第一行三个整数 n,m,p. 输出格式 输出一行一个整数,表示答案对 p 取模的结果. 题解: 我们考虑DP,设序列为…
Description BX正在进行一个字符串游戏,他手上有一个字符串L,以及其他一些字符串的集合S,然后他可以进行以下操作:对 于一个在集合S中的字符串p,如果p在L中出现,BX就可以选择是否将其删除,如果删除,则将删除后L分裂成的左右 两部分合并.举个例子,L='abcdefg' , S={'de'},如果BX选择将'de'从L中删去,则删后的L='abcfg'.现在BX可 以进行任意多次操作(删的次数,顺序都随意),他想知道最后L串的最短长度是多少. Input 输入的第一行包含一个字符串…
正题 题目链接:http://noi.ac/problem/2007 题目大意 \(n\)个格子排成一排,每个格子有一个\(0/1\)和一个颜色.开始每个格子都是\(0\),\(q\)次操作取反一个颜色的所有格子的\(0/1\),然后询问\(1\)的格子构成的连通块数量. \(1\leq n,q\leq 10^5\) 解题思路 可以理解为总共的\(1\)格子数减去相邻的\(1\)格子对数. 转换一下模型,每队相邻的颜色\(x,y\)之间连接一条边. 现在问题变为了每次删除或者加入一个点,求连通子…
正题 题目链接:http://noi.ac/problem/2139 题目大意 给出\(n\)个数字的序列\(a_i\).然后选出一个不降子序列最大化子序列的\(a_i\)和减去没有任何一个数被选中的区间数量. \(1\leq n\leq 10^6,1\leq a_i\leq 10^8\) 解题思路 嗯,考虑朴素的\(dp\)方程,设\(f_i\)表示以\(i\)为末尾的值就有 \[f_i=f_j+a_i+\frac{(i-j-1)(i-j)}{2} \] 然后展开整理一下都乘二就是 \[f_i…
正题 题目链接:http://noi.ac/problem/2266 题目大意 给出\(n\)个点的一棵树,有一些边上有中转站(边长度为\(2\),中间有一个中转站),否则就是边长为\(1\). \(m\)次询问一个东西从\(x\)出发走到\(y\),每隔\(k\)步中转站会关闭一次(\(k\)的倍数步走完后不能在中转站上).求在关闭多少次以内可以到达 \(1\leq n,m\leq 10^5\) 解题思路 发现最多只需要走\(2n\)步,然后每隔\(k\)步关闭一次,所以可以考虑根号分治. 先…
容易看出,只要从两边往中间扫描,碰到相等的就直接分割然后加入答案即可,判断相等用字符串hash #include<bits/stdc++.h> #define REP(i,a,b) for(int i(a);i<=(b);++i) #define dbg(...) fprintf(stderr,__VA_ARGS__) using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigne…
public class leve { private int leveNo; private int strLength; private int strTimes; private int timeLimit; private int perScore; public leve(int leveNo, int strLength, int strTimes, int timeLimit, int perScore) { super(); this.leveNo = leveNo; this.…
题目描述 给你一个字符串L和一个字符串集合S,如果S的某个子串在S集合中,那么可以将其删去,剩余的部分拼到一起成为新的L串.问:最后剩下的串长度的最小值. 输入 输入的第一行包含一个字符串,表示L. 第二行包含一个数字n,表示集合S中元素个数. 以下n行,每行一个字符串,表示S中的一个元素. 输入字符串都只包含小写字母. 输出 输出一个整数,表示L的最短长度. 样例输入 aaabccd3acabcaaa 样例输出 2 题解 我们考虑:每次删除连续的一段,对应到原串上即:删除 $[l,r]$ 中所…
题目 [题目描述] pure 和 dirty 决定玩 $T$ 局游戏.对于每一局游戏,有 $n$ 个字符串,并且每一局游戏由 $K$ 轮组成.具体规则如下:在每一轮游戏中,最开始有一个空串,两者轮流向串的末尾添加一个字符,并且需要保证该串为 $n$ 个字符串中任意一个串的前缀,不能操作的人输掉这一轮,并且在下一轮游戏中由该轮输掉的人先手.另外为了遵循女士优先的原则,在每一局游戏的第一轮均由 pure 先手. 玩家的目标是获得整局游戏的胜利,一局游戏的胜利条件是:对手输掉最后一轮游戏.我们可以假定…
闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n,W,表示每个商店都有n个糖果且两个商店的每个糖果的价格都是W 求出最大的min(Sa,Sb)-D*W 其中Sa表示在A商店买的糖果的愉悦度之和,Sb表示在B商店中买的糖果的愉悦度之和,D表示总共在两家商店买的糖果数 题解: 直接乱搞,贪心想一想,每次取糖果肯定先从愉悦度大的取为优 那么我们只要在取…
题目链接:戳我 [问题描述] 小A在玩打地鼠游戏.有一个n×m的网格,每个位置上地鼠都会要么冒出头要么缩进去.地鼠很狡猾,每次小A选一个地鼠冒出头的格子(x,y)把它打下去,但同一行同一列的地鼠全都会冒出头来. 小A发现这个游戏好像怎么都玩不完.这个时候小B过来向他展示真正的技术了.小B当然也知道这游戏是玩不完的,于是他准备了两个状态,并准备向小A表演把状态1进行若干次打地鼠操作变成状态2. 现在小B想知道他会不会翻车. [输入格式] 第一行两个整数n,m表示棋盘大小n行m列. 接下来n行,每行…