Codeforces 17E Palisection 【Manacher】】的更多相关文章

Codeforces 17E Palisection E. Palisection In an English class Nick had nothing to do at all, and remembered about wonderful strings called palindromes. We should remind you that a string is called a palindrome if it can be read the same way both from…
[CodeForces - 1225C]p-binary [数论][二进制] 标签: 题解 codeforces题解 数论 题目描述 Time limit 2000 ms Memory limit 524288 kB Source Technocup 2020 - Elimination Round 2 Tags bitmasks brute force math *1600 Site https://codeforces.com/problemset/problem/1225/c 题面 Exa…
[题目大意] 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. [manacher知识点] ①mx - i > P[j] 的时候,以S[j]为中心的回文子串包含在以S[id]为中心的回文子串中,由于 i 和 j 对称,以S[i]为中心的回文子串必然包含在以S[id]为中心的回文子串中,所以必有 P[i] = P[j]. ②当 P[j] > mx - i 的时候,以S[j]为中心的回文子串不完全包含于以S[id]为中心的回文子串中,但是基于对称性可知,下图中…
The value of a string s is equal to the number of different letters which appear in this string. Your task is to calculate the total value of all the palindrome substring. Input The input consists of a single ≤∣s∣≤×^ ). The string s only contains low…
[题目大意] 求最长回文队伍且队伍由中间向两边递减. [思路] 和字符串一样的做法,在递推的时候增加判断条件:a[i-p[i]]<=a[i-p[i]+2]. #include<iostream> #include<algorithm> #include<cstdio> #include<cstdlib> #include<cstring> using namespace std; +; ]; ]; int n; void init() {…
题目传送门 传送点I 传送点II 传送点III 题目大意 给定一个串$s$询问,有多少对回文子串有交. 好像很简单的样子. 考虑能不能直接求,感觉有点麻烦.因为要考虑右端点在当前回文子串内还有区间包含问题. 那么考虑补集转化.问题转化成,考虑当前的回文串,之前有多少个回文串与它不相交. 跑一遍Manacher.然后先差分再二阶前缀和求出以第$i$个位置为右端点的回文子串的个数.然后再求一次前缀和就可以了. 然后再扫一遍就做完了. Code /** * Codeforces * Problem#1…
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训练好拉拉队有多么的重要.拉拉队的选拔工作已经结束,在雨荨和校长的挑选下,n位集优秀的身材.舞技于一体的美女从众多报名的女生中脱颖而出.这些女生将随着篮球队的小伙子们一起,和对手抗衡,为艾利斯顿篮球队加油助威.一个阳光明媚的早晨,雨荨带领拉拉队的队员们开始了排练.n个女生从左到右排成一行,每个人手中都…
题意还是很好理解的,根据题目给出描述条件然后求出这串QUEUE 我的做法就是用两个数组 before[] 和 after[] 表示 ai 前面的前面的人的学号 和 ai 后面的后面的人的学号 ex[] 表示 ai 这个人在输入的时候出现的次数,这个数组用于当人数为奇数的时候,寻找第1个人学号,只要遍历一遍1 - 10^6即可 具体还是看代码吧 QAQ ,感觉代码还是比较好理解的. [这道题目 RE 起码5次,真正原因是数组没有开到位 = = ,也真是觉得自己最近没有写代码了好弱.........…
A. k-rounding time limit per test:1 second memory limit per test:256 megabytes input:standard input output:standard output For a given positive integer n denote its k-rounding as the minimum positive integer x, such that x ends with k or more zeros i…
C. Journey time limit per test:2 seconds memory limit per test:256 megabytes input:standard input output:standard output There are n cities and n - 1 roads in the Seven Kingdoms, each road connects two cities and we can reach any city from any other…
题目大意: 题目是将$[0,m)$的数划成了两个集合,其中一个集合的元素个数不超过$n$.问在第一个集合中选出的数加上第二个集合中选出的数的和中没有出现的数有哪些. 题目分析: 很有意思的一道题.方便起见,接下来的所有表述在模意义下进行.选出的数集合用$a_1 \sim a_n$表示 考虑给出的集合,$k$无法由两个集合中任选一个数的和表示等价于对于给出的集合元素$a_i$,$k-a_i$也在给出的集合之中. 这样来看答案不会超过$n$.也就是你对选出的集合中最小的数考虑,它与另一个选出的数配对…
题目分析: 我写了史上最丑的后缀数组,怎么办? 首先manacher一遍两个串,这样只用考虑第三问.用$作为间隔符拼接两个串,把第一个串翻转.枚举回文中心,取最长的回文串,对于剩下的部分利用LCP匹配即可. 代码: #include<bits/stdc++.h> using namespace std; #define Sec first.second #define Fir first.first ; ]; string s1,s2,vk; ]; void read(){cin >&g…
题目分析: 比较简单,先跑一边manacher,然后对于回文部分可以碰到末尾的一定满足条件,否则向后转移. 代码: #include<bits/stdc++.h> using namespace std; ; ]; ],n; void manacher(){ memset(f,,sizeof(f)); *n-,j=n-;i>=;i-=,j--){ solve[i] = str[j];solve[i-] = '$'; } solve[] = str[]; f[] = ; n = *n-;…
<题目链接> 吉哥又想出了一个新的完美队形游戏!  假设有n个人按顺序站在他的面前,他们的身高分别是h[1], h[2] ... h[n],吉哥希望从中挑出一些人,让这些人形成一个新的队形,新的队形若满足以下三点要求,则就是新的完美队形: 1.挑出的人保持原队形的相对顺序不变,且必须都是在原队形中连续的:  2.左右对称,假设有m个人形成新的队形,则第1个人和第m个人身高相同,第2个人和第m-1个人身高相同,依此类推,当然如果m是奇数,中间那个人可以任意:  3.从左到中间那个人,身高需保证不…
<题目链接> 最长回文 Problem Description 给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度.回文就是正反读都是一样的字符串,如aba, abba等   Input 输入有多组case,不超过120组,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S两组case之间由空行隔开(该空行不用处理)字符串长度len <= 110000   Output 每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最…
题目链接:https://vjudge.net/problem/HihoCoder-1032 manacher算法详解:https://blog.csdn.net/dyx404514/article/details/42061017 题目大意: 给出一段字符串,输出其中最长回文字串的长度. #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using n…
Best Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 4345    Accepted Submission(s): 1791 Problem Description After an uphill battle, General Li won a great victory. Now the head of state…
Harry and magic string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 576    Accepted Submission(s): 287 Problem Description Harry got a string T, he wanted to know the number of T’s disjoint p…
这题就单独写个题解吧.想了两天了,刚刚问了一个大佬思路基本上有了. 题意: 一个串$S$,一个串$T$,在$S$中选一段子串$S[i,j]$,在$T$中选一段前缀$T[1,k]$使得$S[i,j]T[1,k]$拼起来得到的字符串是回文,并且$S$的这个串长度大于$T$的这个.问有多少这样的三元组$(i,j,k)$ 思路: 首先我们可以知道我们要找的其实就是这样三个串,$a,b,c$.其中$a$和$c$合起来是$S$中连续的一段子串,$b$在$T$中且$a$和$b$是对称的,$c$一定要是一个回文…
考试竟然写错了manacher!太耻辱了!所以赶快又敲了一遍模板!!一定不能错了aaaa #include<iostream> #include<cstdio> #include<cstring> using namespace std; ], M[]; ], ans; void manacher ( ) { int len = strlen ( a ); M[] = ] = '#'; ; i < len; i ++ ) { M[i*+] = a[i]; M[i*…
dp??不能确定转移状态.考虑用优先队列储存最优决策点,可是发现当前选择最优不能保证最后最优,在后面可以将之前用过的替换过来. 比如数据: 3 5 4 6 只储存a[i]来决策不能延展到后面的状态,因此每次选择过后把b[i]加入队列,下次选择最优时如果选择到了b[i],则表示用之前选择过的来替换到当前状态. 这里我开了两个优先队列. #include<iostream> #include<cstdio> #include<queue> #define ll long l…
Codeforces 1012C Hills Welcome to Innopolis city. Throughout the whole year, Innopolis citizens suffer from everlasting city construction. From the window in your room, you see the sequence of n hills, where i-th of them has height ai. The Innopolis…
BZOJ2342 Shoi2011 双倍回文 Description Input 输入分为两行,第一行为一个整数,表示字符串的长度,第二行有个连续的小写的英文字符,表示字符串的内容. Output 输出文件只有一行,即:输入数据中字符串的最长双倍回文子串的长度,如果双倍回文子串不存在,则输出0. Sample Input 16 ggabaabaabaaball Sample Output 12 HINT N<=500000 Manacher板子处理出来p数组后转化成原来串中的g数组(缩小数据规模…
BZOJ2565 最长双回文串 Description 顺序和逆序读起来完全一样的串叫做回文串.比如acbca是回文串,而abc不是(abc的顺序为"abc",逆序为"cba",不相同). 输入长度为n的串S,求S的最长双回文子串T,即可将T分为两部分X,Y,(|X|,|Y|≥1)且X和Y都是回文串. Input 一行由小写英文字母组成的字符串S. Output 一行一个整数,表示最长双回文子串的长度. Sample Input baacaabbacabb Samp…
Codeforces 25E Test E. Test Sometimes it is hard to prepare tests for programming problems. Now Bob is preparing tests to new problem about strings - input data to his problem is one string. Bob has 3 wrong solutions to this problem. The first gives…
E. Palisection time limit per test 2 seconds memory limit per test 128 megabytes input standard input output standard output In an English class Nick had nothing to do at all, and remembered about wonderful strings called palindromes. We should remin…
原题 题目要求相交的回文串对数,这显然非常难,但是要有一种正难则反的心态,求不出来相交的,求出来不相交的不就好了! 对于每以位置i结尾的字符串,在他后面与他不相交的就是以这个位置为结尾的个数和以这个位置以后为开头的乘积. 而答案就是总回文串个数sum*(sum-1)/2减去不相交个数 提到回文串,我们会想到manacher,但是这求出来的是中心的回文串最长半径,怎么转换成结尾和开头的个数呢? 对于已知位置i和以i为中心的回文串最长半径a[i],显然从i-a[i]到i都可以作为一个回文串的开头,i…
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3068 思路 n^3 的做法 对于每个字符 同时 往左往右搜 但是要分奇偶 就是 n^3 n^2 的做法 将字符串处理一下 变成全都是奇数的 字符串 比如 abab 变成 "#a#b#a#b#" 这样 如果原串是回文 这样处理后 也是回文 n 的做法 Manacher 算法 参考 https://segmentfault.com/a/1190000003914228 AC代码 #includ…
Strings in the Pocket 题目链接 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6012 题意 给你两个字符串,问有多少种方法能使翻转a中一个的子串后能够和b相同 题解 分两种情况 a和b相同:用马拉车求回文子串个数 a和b不同:记录第一个和最后一个a不同于b的位置L和R,判断[L,R]是不是回文串,如果不是,答案为0:如果是,匹配a的前部和b的后部.a的后部和前部,看能匹配几次 代码 #include<…
题意: 给n个奖池,t张彩票,q次操作. 每个奖池的奖金为pi. 每个奖池现有的彩票的数量为ai,保证ai>=1: q次操作,每次有两种,第i个奖池的现有彩票数量加一,或减一. 不允许投票的数量多于奖池数量的二分之一. 保证: n,t,q<=2e5 ai<=1000 pi<=1000 求在采用最佳策略的前提下获得奖金的期望. 思路: 首先要证明贪心的正确性,即把某张票投入某奖池之后其下一张票给期望做出的贡献要小于上一张彩票... 把式子写一下,求导,发现导数是单调递减的... 然后…