HDU3613 Manacher//EXKMP//KMP】的更多相关文章

http://acm.hdu.edu.cn/showproblem.php?pid=3613 每个字符都有一个权值,将一个字符串分成两半,如果某一半是回文串就把所有的字符权值加起来,否则当0来处理,问最大值会是多少. 这题很明显是判断前后缀的回文串然后用O(n)的时间遍历取最大值. 问题在于如何判断是前后缀的最大回文串,对于回文串,就很自然而然的想到Manacher算法,对于每一个点,如果以它为中心的回文字符串和最前端接上,他就是一个前缀的回文串,如果和后面接上就是一个后缀的回文串,将所有的这些…
KMP算法: kmp示例代码: void cal_next(char *str, int *next, int len) { next[0] = -1;//next[0]初始化为-1,-1表示不存在相同的最大前缀和最大后缀 int k = -1;//k初始化为-1 for (int q = 1; q <= len-1; q++) { while (k > -1 && str[k + 1] != str[q])//如果下一个不同,那么k就变成next[k],注意next[k]是小…
题面 题意:给你2个串(长度1e6),在第一个串里找“s1s2s3”,第二个串里找“s4”,拼接后,是一个回文串,求方案数 题解:知道s1和s4回文,s2和s3回文,所以我们枚举s1的右端点,s1的长度乘以s2起始点为左边界的回文串的数量,累加就是答案. 所以先求s1,再求以每个点为左边界的回文串的数量 就是求每个后缀匹配第二个串的LCP(扩展kmp,或者hash+二分)二的话,后面部分用(Manacher+前缀和)就可以解决 #include<bits/stdc++.h> using nam…
Manacher(马拉车)是一种求最长回文串的线性算法,复杂度O(n).网上对其介绍的资料已经挺多了的,请善用搜索引擎. 而扩展KMP说白了就是是求模式串和主串的每一个后缀的最长公共前缀[KMP更像是一个自动机] 题目: POJ 1159: Palindrome 求原字符串最少增加几个字符后可变成回文串,相当于求最长回文子序列的长度. 解法:直接求串S和反转串Sr的最长公共子序列. #include <cstdlib> #include <cstdio> #include <…
题目: Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find by performing this transformation. For example: Given "aacecaaa", return "aaacecaa…
分块+莫队 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; /*分块*/ #include<cmath> ; int pos[N],n,blk; void fenkuai(){ scanf("%d",&n); blk=(int)(double(n)); ;i<=n;i++) pos[i]=(i-)/blk+; } /*莫队…
第6题是利用周期性求解, 第7题是 (总的序列长度-最长的满足要求的序列长度) 第8题是 设定起点,可以找到最早出现的不满足条件,然后后面都是不满足的,利用队列求解这个过程 大神给的简单,精炼的题解. 1. 消除之王 数据量为4*4,所以直接暴力dfs的层数不会超过8层,也就是dfs的复杂度为8!,然后加上一些模拟掉落的操作,总的复杂度也不会大. 2. NC 大数开根求整数部分. 网上大神有直接的模板 附模板一份: #include <stdio.h>#include <string.h…
--某不知名蒟蒻的SDOI2018 R1退役场游记&&OI生涯总结 真的是混不下去了. 进队是不可能的, 进队是不可能进队的. 这辈子不可能进队的. 刷题又不会刷 就是靠打表找规律这种东西 才能维持的了苟过一轮这样子.. 去学文化课大概会像回家一样, 班里各各都是学霸, 说话又好听, 我会喜欢那里的. 然而内心十分痛苦与煎熬.jpg 本来看到自己这波惨状是不想写游记了的, 但逃是不能逃的, 总还是要直面这段经历的. 不过这次也确实暴露出了自己技不如人的一面, 平时缺少的努力也无处遁形. 无…
A. 卷 发现乘积足以爆 \(long\) \(long\),但是数据随机,可以略忽略精度问题 一个快速降低数的级别的方法是取对数,由于有性质 \(log(x * y)=logx+logy\),合并时运算会很方便,于是转化成加和型最大独立集问题 B. 简单题 观察发现对于每个奇数,其 \(2\) 倍放在另一个集合,\(4\) 倍放在当前集合,以此类推 那么对于一条偶数长度的链,一定一半放在第一个集合,另一半放在第二个集合,对答案贡献乘 \(2\) 对于奇数长度的链,一定分成 \(len\) 和…
题目链接:https://vjudge.net/problem/HDU-3613 Best Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 3104    Accepted Submission(s): 1277 Problem Description After an uphill battle, General Li w…