摘要: 分块,K小的时候dp,K大的时候直接枚举K的倍数然后判断。 已经尽力优化了,还是没过,,,先留代码,有时间再改。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> # 阅读全文
posted @ 2016-04-07 16:34 __560 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 统计一个字符串中不相交的回文串的对数。 枚举以i为右端点的回文串,乘以在区间[i+1,n]的回文串个数,累加即可。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> 阅读全文
posted @ 2016-04-07 13:47 __560 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 直接从两棵树的奇根和偶根dfs就可以了。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<map> #define REP(i,a,b) for( 阅读全文
posted @ 2016-04-07 13:07 __560 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 回文树在处理回文方面真的比manacher要好用得多。。。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP(i,a,b) for(int i 阅读全文
posted @ 2016-04-07 01:14 __560 阅读(449) 评论(0) 推荐(0) 编辑
摘要: len[u]表示结点u所表示的回文串长度,cnt[u]表示结点u所表示的回文串出现次数,num[u]表示结点u的后缀回文串个数(包括自己)。 由于一个字符串本质不同的回文串最多不超过n个,所以空间开n+2即可,算上每个结点的26个Next指针,空间复杂度o(26*n)。时间复杂度o(n)。 stru 阅读全文
posted @ 2016-04-07 00:36 __560 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 回文树的裸题。 #include<bits/stdc++.h> #define REP(i,a,b) for(int i=a;i<=b;i++) #define MS0(a) memset(a,0,sizeof(a)) using namespace std; typedef long long l 阅读全文
posted @ 2016-04-07 00:31 __560 阅读(484) 评论(0) 推荐(1) 编辑