![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
字符串
616156
赛高______↑
展开
-
AtCoder Regular Contest 088
C:给出一个X,Y 求出一个序列AA,满足Ai−1|Ai且Ai−1≠Ai,Ai∈[X,Y]A_{i-1}|A_i且A_{i-1}≠A_i,A_i∈[X,Y],求这个序列的最长长度。模拟,序列第一位为X,每一位为之前一位的两倍,O(logY)O(logY)。D:给出一个01串,可以将01串上任意连续的长度不小于k的一个子序列翻转,求k的最大值。很容易发现一点,假设我们将原创 2017-12-24 23:05:32 · 224 阅读 · 0 评论 -
【多项式】【字符串】【manachar】BZOJ3160万径人踪灭
分析:还是比较板的多项式老题这题唯一花哨一点的,就是要求回文串不能全部连续。而我们知道,全部连续的话可以用manachar算出来。那么剩下的就是算所有的回文子序列的方案数了。显然fft一发,对每个位置,算出其左边和右边对称的个数,记为f(i)f(i)f(i)那么以i为中心的回文子序列数量就是2f(i)−12^{f(i)}-12f(i)−1#include<cstdio>...原创 2019-03-26 20:17:18 · 215 阅读 · 0 评论 -
【KMP】BZOJ2384[Ceoi2011]Match
分析:首先,可以转化判定条件:如果在一段数中,每一个数左侧,比它小的数和给出的目标序列相同。那么就能认为这段数的大小关系合法。然后就可以魔改KMP来做了。所谓魔改,就是之前本来是判定两个字符是否相同,而这里变为判断当前已加入的左侧的数中,比它小的数是否合法。但是为了高效修改,需要借助树状数组优化修改。其余部分和KMP较为类似。#include<cstdio>#includ...原创 2018-10-22 20:39:02 · 477 阅读 · 0 评论 -
【AC自动机】【矩阵加速】BZOJ4861魔法咒语
分析:巨恶心的一题双代码题。对于前半部分,把禁止出现的字符串建一颗AC自动机。然后枚举每个位置用了某个模板串后转移到哪里。然后直接DP即可。但是对于后半部分数据,则必须写一个矩阵加速。。。因为模板串长度不超过2,只需要对所有长度为2的建一个虚拟节点就行了。#include<cstdio>#include<cstring>#include<algori...原创 2018-10-22 20:33:08 · 220 阅读 · 0 评论 -
【AC自动机】【状压DP】【搜索】BZOJ1559密码
分析:非常套路的状压DP套AC自动机水题。就是找方案有点恶心。#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#include<vector>#include<string>#in原创 2018-10-22 20:28:36 · 176 阅读 · 0 评论 -
【AC自动机】【高斯消元】BZOJ1444有趣的游戏
分析:AC自动机套高消版题#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<queue>#define SF scanf#define PF printf#define EPS 1e-10#define MAXN 11...原创 2018-10-22 20:27:23 · 209 阅读 · 0 评论 -
【字符串】【高斯消元】【KMP】BZOJ4820硬币游戏
分析:如果数据范围再小点,可以利用BZOJ1444有趣的游戏方法来做。所以这里为了优化,直接存储下来从某个字符串转移到另一个的概率即可。#include&lt;cstdio&gt;#include&lt;cstring&gt;#include&lt;cmath&gt;#include&lt;vector&gt;#define SF scanf#define PF p原创 2018-10-22 20:21:55 · 186 阅读 · 0 评论 -
【KMP】【字符串】BZOJ4560字符串覆盖
分析:这题与KMP唯一的关系就是个判断。。。首先,利用KMP算出哪些位置可以匹配。然后显然有个DP[i][j]表示前i个字符,凑出的状态为j。为了处理相交情况,所以每次向后转移都必须枚举很多位置。然后可以利用后缀数组优化,DP[i]=DP[j]+i-j这种形式的DP,可以先把DP[j]-j存下来,然后读取的时候直接读该位置的最大/最小值+i即可。#include&lt;cstdio&gt;...原创 2018-10-22 20:19:01 · 301 阅读 · 0 评论 -
【字符串】【KMP】BZOJ3670动物园
分析:不算太难的fail指针应用题。每次利用fail指针在上一个位置的匹配信息,不停地向下匹配,如果超过一半则退回去即可。#include<cstdio>#include<cstring>#include<cmath>#include<vector>#include<map>#define SF scanf#define ...原创 2018-10-22 20:11:41 · 249 阅读 · 0 评论 -
【KMP】【字符串】BZOJ4974字符串大师
分析:在KMP算法中,failfailfail指针有一个特殊的性质,i−failii-fail_ii−faili是前i个字符的最小循环节大小。所以这题相当于就是说,给了你每个点的fail指针,求一个满足的字符串。那么按照建fail指针的方式倒过来做就好了#include<cstdio>#include<cstring>#include<cmath>...原创 2018-10-22 19:56:40 · 277 阅读 · 0 评论 -
【总结】【字符串】AC自动机&KMP算法
前言:AC自动机与KMP算法,都是用于优化字符串匹配的算法。KMP算法应用于单模式串的匹配。而AC自动机是应用于多模式串的匹配。但并不意味着KMP算法可以被完全取代(尽管两者的算法思想本质上是一样的)。KMP算法:相对而言,KMP算法比较容易一些。首先,考虑如何暴力匹配?很显然,可以以主串的任意一个位置开头,然后开始匹配,失配后,再找下一个位置开头。这样的复杂度显然是O(n*m)的...原创 2018-10-22 19:43:58 · 476 阅读 · 0 评论 -
【DP】【KMP】1015F Bracket Substring
题意:给出一个括号序列,求包含这个序列的长度为2*n括号匹配的个数。 |s|≤200|s|≤200|s|\leq 200 n≤100n≤100n\leq 100分析:这里不得不介绍一下BZOJ1009GT考试 这题是简化版本。很容易发现,这题就是GT问题的补集。首先,括号匹配的常规DP定义式:dp(i,j)dp(i,j)dp(i,j)表示长度为i,前缀和为j的括号匹配方案...原创 2018-08-02 17:14:20 · 264 阅读 · 0 评论 -
【字符串】Atcoder 064F Rotated Palindromes
分析:显然,对于长度为N,字符种类为K的字符串,其回文串的个数为k⌈n2⌉k⌈n2⌉k^{\lceil \frac n 2\rceil}而且每个字符串都可以操作N次。但是会有重复。首先,对于一个字符串N,其最小循环节长度为c, 若c为奇数,那么有恰好有c个不同的字符串。 若c为偶数,那么有恰好c2c2\frac c 2个不同的字符串。所以只需要求最小循环节大小为c的字符串个数即...原创 2018-08-05 10:43:01 · 255 阅读 · 0 评论 -
【凸包】【KMP】Codeforces1017E The Supersonic Rocket
分析:。。。第一次见CF服务器炸了,还好最后unrated了,不然这次死惨。。。很容易想到,这两个多边形的凸包能通过旋转、平移最终重合,就必然满足条件。所以就是判断两多边形是否全等。额。。题解就是标题:顺时针地把两个凸包每个边的长度、每个点的旋转角储存下来(长度不开根号,旋转角用差积表示,这样都是整数)。如果这两个序列能完全匹配,则说明能够重合。方法就是把其中一个串复制一遍粘在...原创 2018-08-09 10:44:11 · 229 阅读 · 0 评论 -
【FFT】Codeforces954I Yet Another String Matching Problem
分析:又是一道经典的FFT做字符串匹配的问题。 题目要求做一定次数的操作,使得最终所有相匹配的字符一样。可以将这个字符映射到一个图上,如果这种匹配情况下有一个字符xxx匹配的是yyy,那么就在图中xxx点向yyy点连一条边。最终图中的每个联通块的大小-1就是操作次数。(其实可以用并查集实现,操作次数就是并查集中的合并次数)所以枚举每一种匹配关系,比如如果考虑xxx字符与yyy字符匹配...原创 2018-06-24 22:49:00 · 277 阅读 · 0 评论 -
【后缀自动机】Hihocoder#1449 : 后缀自动机三·重复旋律6
分析:后缀自动机板子题。维护endpos集合大小。复制出来的点不代表任何一个前缀,所以其endpos集合大小为所有fail指向它的endpos之和,否则其endpos集合大小为所有fail指向它的endpos之和+1#include<cstring>#include<algorithm>#include<cmath>#include<cstd...原创 2019-04-02 10:47:52 · 348 阅读 · 0 评论