AB串】的更多相关文章

题目: 给定n个A和2n个B.用这些字符拼成一个字符串.要求这个串的全部前缀和后缀B的个数始终不少于A. (一个字符串的前缀是仅仅从开头到某个位置为止的子串,后缀是仅仅从某个位置到结尾的子串). 输入格式 多组数据.每组数据仅仅有一行,包括一个正整数n. (n<=10^17). 输出格式 每组数据输出一行,终于结果对99991取余数的结果. 分析: 简单的想法是建立一个二叉树.深度遍历一下就可以. 可是效率太低,对照较大的n不太适用,临时没想到什么好办法.先简单的做做看. 代码: <span…
[题目分析] 设答案的长度为m,…
(一)定义 由于BF模式匹配算法的低效(有太多不必要的回溯和匹配),于是某三个前辈发表了一个模式匹配算法,可以大大避免重复遍历的情况,称之为克努特-莫里斯-普拉特算法,简称KMP算法 (二)KMP算法了解 问题由模式串T决定,而不是由目标串S决定 可以避免不必要的回溯和多余的匹配 1.思路启发一(避免了所有的回溯): 前提:对于模式串和目标串的匹配,我们在前4个完全匹配,直到i5与j5才失配 上面匹配到j5与i5时失配,那么我们下一步应该如何匹配呢?是按照BF算法回溯到i=i-j+-->i2处继…
Codeforces 566F 题目大意:给定$N$个数,任意两个数之间若存在一个数为另一个数的因数,那么这两个数存在边,求图中最大团. 分析:求一个图最大团为NP-Hard问题,一般不采用硬方法算.设$f[i]$表示数值为$i$的数的最大团,那么那么得到以下转移: $f[i]=max \{ f[j]+1 \} j|i$ //cf 566f //by Cydiater //2016.11.4 #include <iostream> #include <cstring> #inclu…
Description 一个ab串,问有多少回文子序列,字母和位置都对称,并且不连续. Sol FFT+Manacher. 不连续只需要减去连续的就可以了,连续的可以直接Manacher算出来. 其他全部对称的回文子序列就可以用生成函数那样FFT搞出来,把ab分开考虑就行. 有挺多细节的...包括下标运算什么什么的... Code /************************************************************** Problem: 3160 User:…
Given two strings,  a and , b find and print the total number of ways to insert a character at any position in string a such that the length of the Longest Common Subsequence of characters in the two strings increases by one. Input Format The first l…
题目链接:http://poj.org/problem?id=3415 题意:给定2个串[A串和B串],求两个串公共子串长度大于等于k的个数. 思路:首先是两个字符串的问题.所以想用一个'#'把两个字符串拼接起来.求后缀数组. 然后按照k把height数组分组.大于等于k的为一组,然后就是统计每组的贡献.对于每一组的贡献即是组内所有A串的后缀和B串的后缀的lcp值,即为val.那么val对于答案的贡献为(val-k+1).如果我们暴力每组的AB串后缀的组合.时间复杂度是O(n^2).不能满足要求…
很久以前写的,忘补结题报告了两串相连中间用特殊的分隔符然后求height,由于要求求公共子串大于等于k的个数,并且只要位置不同即可因此不难想到在名次上对height分组,一组内的height保证>=k下面就是在组内统计的问题了然后还是不难发现,分别在AB串中的后缀i,j,他们能产生2*[LCP(i,j)-k+1]个公共子串然后那个著名的性质LCP(i,j)=min(h[rank[i]+1]~h[rank[j]]) (令rank[i]<rank[j])不难想到维护一个单调增的队列,遇到在B串就统…
D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output One day Om Nom found a thread with n beads of different colors. He decided to cut the first several beads from this th…
字符串匹配问题 有n个a串个m个b串,讲a的前缀和b的后缀粘在一起有多少个不同的新串. 首先求不同的前缀和后缀肯定好求了,就用字典树分别存一下a个倒过来的b. 那个问题就是解决例如,abcd,和bcde为ab串,abcde为新串的去重问题,可以看出来有四 个重复,a bcde,ab cde, abc de, abcd e,我们能够很轻易的观察到如果两串的前缀后缀的重和部分(在这里即为bcd)有n个,那个会有n+1种重复,所以只要减掉那些重合的部分就好,用字典树记录有多少以a结尾的长度大于1的前缀…
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC026E.html 题目传送门 - AGC026E 题意 给定一个长度为 $2n$ 的字符串,包含 $n$ 个 $'a'$ 和 $n$ 个 $'b'$ . 现在,让你按照原顺序取出一些字符,按照原顺序组成新的字符串,输出所有满足条件的字符串中字典序最大的?(字典序: $'b'>'a'>'\ '$) 条件限制:当且仅当取了原序列的第 $i$ 个 $'a'$ 时,原序列的第 $i$ 个 $'b'$ 也被取了…
找个下午打了场CF,结果被某uranus吊打......一千多名,过弱. T1,一眼二分了,后来发现题解是O(1)的hhh T2,题意精炼一下就是让你找一个串的循环节个数,直接n²枚举..... T3,给你一个ab串,你依次考虑每个前缀,选择reverse这个前缀或者不操作.输出方案使得最后的字典序最小. 手玩一下就能发现,一定能构造出最小字典序,所有a都在b前面. 具体操作是每个整段的结尾字符那里翻转. T4,给你10个1e5的排列,你需要从每个中提取连续的一段,使得这十段相同.求方案数. 考…
Description 给定三个数字串A,B,C,请找到一个A,B的最长公共子序列,满足C是该子序列的子串. Input 第一行包含一个正整数n(1<=n<=3000),表示A串的长度. 第二行包含n个正整数,其中第i个数表示A[i](1<=A[i]<=1000). 第三行包含一个正整数m(1<=m<=3000),表示B串的长度. 第四行包含m个正整数,其中第i个数表示B[i](1<=B[i]<=1000). 第五行包含一个整数k(0<=k<=3…
题目链接 \(Description\) 给定一张图(可能存在自环),每个点上有A或B.求是否存在一条路径,使得在上面不断走,能够得到所有AB串组合(可以重复经过点). \(n\leq2\times10^5,m\leq2\times10^5\). \(Solution\) 对于一个点,如果它的后继只有A或B(或者没有后继),显然它不能在这条路径上. \(Sol 1\) 我们把这样的点删掉.然后再判断连向它的点是否要被删掉...这样一直删,判断最后是否存在未被删掉的点. 和拓扑排序差不多. \(S…
cf劲啊 原题: We have a string of letters 'a' and 'b'. We want to perform some operations on it. On each step we choose one of substrings "ab" in the string and replace it with the string "bba". If we have no "ab" as a substring,…
A 判断下5个名字出现了几次.pre数据巨弱,就这么一水题在std测刷掉了非常多的人.. /** @Date : 2017-10-24 16:04:41 * @FileName: A.cpp * @Platform: Windows * @Author : Lweleth (SoungEarlf@gmail.com) * @Link : https://github.com/ * @Version : $Id$ */ #include <bits/stdc++.h> #define LL lo…
http://poj.org/problem?id=3415 给定两个字符串A 和B,求长度不小于k 的公共子串的个数(可以相同). 论文题,和上道题(POJ2774)类似,首先想到现将AB串合并,然后子串可以表示成字符串后缀的前缀,于是我们比较任意两个A后缀和B后缀,用height求出他们的公共子串长度就很好做了. (不懂为什么好做的可以看SPOJ694) 那么最坏的想法就是每遇到B后缀就和前面遇到的A后缀比较,这样显然TLE,也没用到height数组的优越性. 但是我们A后缀可以用单调栈维护…
Description Mushroom最近看上了一个漂亮妹纸.他选择一种非常经典的手段来表达自己的心意--写情书.考虑到自己的表达能力,Mushroom决定不手写情书.他从网上找到了两篇极佳的情书,打算选择其中共同的部分.另外,Mushroom还有个一个情敌Ertanis,此人也写了封情书给妹子. Mushroom不希望自己的情书中完整的出现了情敌的情书.(这样抄袭的事情就暴露了). Mushroom把两封情书分别用字符串s1和s2来表示,Ertanis的情书用字符串s3来表示,他要截取的部分…
常见的子串 时间限制: 5000MS   内存限制: 65536K 提交总数: 11942   接受: 4051 描述 字符串T的子字符串被定义为: Ť(我,ķ)= Ť 我 Ť 我 1 ... Ť I + K -1,1≤ 我 ≤ I + K -1≤| T |. 给定两个字符串A,B和一个整数K,我们定义S,一组三元组(i,j,k): S = {(i,j,k)| ķ ≥ ķ,甲(我,ķ)= 乙(Ĵ,ķ)}. 你要给的价值| S | 特定甲,乙和ķ. 输入 输入文件包含几个数据块.对于每个块,第一行…
蛋疼的比赛,当天忘了做了,做的模拟,太久没怎么做题了,然后C题这么简单的思路却一直卡到死,期间看了下D然后随便猜了下,暴力了下就过了. A.找一个能被t整除的n位数,那么除了<=10以外,其他都可以用长度为n的10或100,1000 ... 来往上加几个数而得到 #include <iostream> #include <stdio.h> #include <set> #include <algorithm> #include <string.h…
河老师的新年礼物 发布时间: 2017年1月1日 15:11   最后更新: 2017年1月1日 15:13   时间限制: 1000ms   内存限制: 256M 描述 河老师的新年礼物是一个长度为n的ab串,他想要找出最长的一个子串使得这个子串中每个字符都相等,他称之为“最优子串”.当然对河老师来说这个问题太简单了,于是他加了一个条件:他可以改变这个串中的某些字符,但一次只能改变一个字符,最多能改变k次.河老师想要知道,在可以对串进行改变的前提下,这个ab串的“最优子串”的长度是多少. 输入…
Another One Bites The Dust CF的题目在你谷上难度虚高似乎已成常态 不过这道题相比于愚人节的那几道相对好得多,没有被评成紫题. 这道题题面意思比较清楚,就是对于给定数量的'a'.'b'.'ab',求出能组成的最长'ab'交替串. ​ 设有x个'a',y个'b',以及z个'ab' ​ 不难想到,对于所有的'ab',可以直接组成一条'ab'串,这样长度就有**2*z**了. ​ 余下的'a'.'b'又如何处理呢? ​ 如果x = y,那么等量的'a'.'b',就相当于又组成…
NOIP越发接近了,于是自己也跟着机房的几位师兄一起做了几次NOIP模拟赛,收获颇多. #1-T1:求点集中的点能否只用三条与坐标轴平行的直线就能全部被经过,其实只要将横纵坐标排序后逐个点检查下就行. #1-T2:先算出结束时每头牛跑了几圈,然后对于小数部分离散化,最后按照从小到大统计Sum([d[i]-d[j]])(1<=i<j<=n)[用树状数组] #1-T3:单调队列+线段树[其实本人认为不用,貌似加个链表就行了] #2-T1:O(n)解法,直接模拟数字进位的情况.O(k)解法,H…
有一个想法就是暴力建图,把每个A向有和他相连的B前缀的A,然后拓扑一下,这样的图是n^2的: 考虑优化建图,因为大部分数据结构都是处理后缀的,所以把串反过来,题目中要求的前缀B就变成了后缀B 建立SAM,发现在parent树中每个B能走到的A都在子树中,所以保留这个树结构,连边权为0的边: 然后在parent树上倍增找到每个AB串对应的点,因为SAM上每个对应不止一个串,所以找完之后把对应多个AB串的点拆成一条链 然后对于一对(x,y)的AB串关系,Ax对应的点向By对应的点连边权为A长度的边…
万径人踪灭 bzoj-3160 题目大意:给定一个ab串.求所有的子序列满足:位置和字符都关于某条对称轴对称而且不连续. 注释:$1\le n\le 10^5$. 想法: 看了大爷的题解,OrzOrz. 因为对称轴可以是两个字符中间的位置,所以我们把字符串按照$Manacher$的形式倍增. 我们希望处理出一个数组$f$,$f_i$表示以$i$为对称轴的左右相等字符个数. 以当前位置为对称轴的答案显然就是$2^{f_i}-1$. 因为还有不连续的条件,我们只需要减掉$Manacher$的回文半径…
A: 题目没读, 啥也不会的室友帮我写的. #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #define LL long long #define ULL unsigned LL #define fi first #def…
思维题 这次cf思维题好多啊 定义了good string 指一个串,其中每一个字符都属于一个长度>=2 的回文串的一部分.叫你求一个串中有几个good substring. 显然ab串 good string会更多.只要aba,bab,aa,bb等等很轻易可以满足 n个字符共有 n*(n-1)/2个不同位置的子串,我们反向考虑排除不是good string的部分. 首先想到ab,ba不是good string,再延申aaaaaaaaab,bbbbbbbbba,abbbbbbbb,baaaaaa…
KMP算法详解: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt(雾)提出的. 对于字符串匹配问题(such as 问你在abababb中有多少个ab串?),朴素的想法是定一个i,从字符串首扫到字符串尾部来枚举字符串位置,找到一个首字符相同的就通过第二层for循环来继续往下一个字符一个字符的匹配. 直到匹配到长度和需要匹配的子串(模式串)长度相等,我们就说找到了一个在原串中的子串并将答案加一,然后继续往下像蜗牛一样的搜索. 有关相似的算法,链…
C. Common Subsequence 题意:给出长度为n两个串,求两个串的最长公共子序列len,如果len>=0.99*n,两个串就是亲兄弟否则不是. 解法:朴素的求LCS的时间复杂度是O(nm),这题肯定超时.正解不容易想,要注意到0.99这个特点,我们从这个特点下手也就是说最多只能抛弃0.01*n=1000个字符, 那么我们设dp[i][j]为A串前i+dp[i][j]个字符抛弃掉i个字符,B串前j+dp[i][j]个字符抛弃掉j个字符获得的LCS长度为dp[i][j]. 那么对于此时…
A.2295 求有多少素数对和等于n. 暴力. #include <bits/stdc++.h> using namespace std; int ss(int n) { ,a=sqrt(n); for(;i<=a;i++) ) ; ; } int main() { int n; while(scanf("%d",&n),n) { ; ;i<=n/;i++) { if(ss(i)&&ss(n-i)) sum++; } printf(&qu…