Manacher算法 啊……Manacher修改一下就好啦~蛮水的…… Manacher原本是找首尾相同的子串,即回文串,我们这里是要找对应位置不同的“反回文串”(反对称?233) 长度为奇数的肯定不满足>_>(中间那个字符无论如何不反对称) 那么我们就找'#'为中心的即可…… 将判断条件...
分类:
其他好文 时间:
2015-04-07 19:18:05
阅读次数:
165
首先我们重新定义0 ≠ 0, 0 = 1, 1 = 0, 1 ≠ 1,然后跑一边manacher就好啦~然后去现学了manacher。。。 1 /************************************************************** 2 Problem:...
分类:
其他好文 时间:
2015-03-16 19:12:38
阅读次数:
131
我们只要暴力枚举块的大小就可以了。。。枚举的总复杂度是O(n / 1 + n / 2 + n / 3 + ...) = O(n * logn)的何如去重呢。。。直接暴力hash再丢进set里搞定,总复杂度O(n * log2n) 1 /********************************...
分类:
其他好文 时间:
2015-03-10 23:04:32
阅读次数:
191
用两个单调队列维护序列中的最大值和最小值即可。poi~#include#includeusing namespace std;int m,n,head[2]={1,1},tail[2]={1,1},q[2][3000001],a[3000001],ans;int main(){ scanf("%d%...
分类:
其他好文 时间:
2015-03-07 08:31:22
阅读次数:
149
题目大意:给定一个数字串,求所有的k满足当将这个数字串从左到右分成大小为k的块时不同的块数量最多 反转同构算一种
枚举k,对于每个k将不同的串插入哈希表去重
反转同构啥的每个串的哈希值乘一下反串的哈希值就行了
时间复杂度O(n/1+n/2+...+n/n)=O(nlogn)
#include
#include
#include
#include
#define M 200200
#...
分类:
其他好文 时间:
2015-03-06 12:44:59
阅读次数:
158
题目大意:给定n个长度总和不超过10W的字符串,求一个最短的母串,使所有字符串的出现次数之和=m 这n个字符串保证不互相包含
TM能不能好好翻译了
令f[i][j]表示第i个字符串后面接上第j个字符串后会增加多少长度
由于j一定不是i的子串,因此这实际上就是在求i的最长的后缀,该后缀同时也是j的前缀
注意不能连出长度为0的边,因此当i=j时要保证这个长度
怎么求呢?其实Hash一下,枚举...
分类:
其他好文 时间:
2015-03-05 09:19:27
阅读次数:
127
题目大意:给定一个长度为n的01串,问有多少个子串满足翻转并取反后和原来一样
定义0=1,0≠0,1≠1,跑Manacher即可
#include
#include
#include
#include
#define M 500500
using namespace std;
int n;
char s[M];
long long Manacher(char str[],int n)
...
分类:
编程语言 时间:
2015-03-03 18:45:22
阅读次数:
198
题目大意:给定一张图,每条边的两个方向有两个不同的权值,现在要求从1号节点出发遍历每条边一次且仅一次,最后回到1号节点,求最大边权的最小值
谁TM翻译的这道题给我滚出来看我不打死你
二分最大边的权值,然后就是经典的判断混合图欧拉回路存在性的问题了
#include
#include
#include
#include
#define M 2020
#define S 0
#defin...
分类:
其他好文 时间:
2015-03-02 11:10:46
阅读次数:
221
题目大意:给定一个无向图,要求将一些点红黑染色,使每个点及其相连的点中至少有一个黑色的点和一个红色的点
逗比题ぽい~
对于任意一个大小>=2的连通图,我们只需要搞出这个图的任意一棵生成树,将这棵生成树撸成二分图再染色就一定能满足要求的ぽい~
因此无法满足要求当且仅当存在一个大小为1的联通块ぽい~
并查集即可ぽい~
#include
#include
#include
#includ...
分类:
其他好文 时间:
2015-02-02 21:36:15
阅读次数:
183
题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2093题解:Orz这题好神! 首先求一位数轴上距离每个点第k近的点。 神做法:维护一个l,r表示a[l--r]是距离i最近的k个点,当i++时,只有可能l++,r++或不改变!!! ...
分类:
其他好文 时间:
2015-02-01 13:23:34
阅读次数:
148