摘要:
分块,K小的时候dp,K大的时候直接枚举K的倍数然后判断。 已经尽力优化了,还是没过,,,先留代码,有时间再改。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> # 阅读全文
摘要:
统计一个字符串中不相交的回文串的对数。 枚举以i为右端点的回文串,乘以在区间[i+1,n]的回文串个数,累加即可。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> 阅读全文
摘要:
直接从两棵树的奇根和偶根dfs就可以了。 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #include<map> #define REP(i,a,b) for( 阅读全文
摘要:
回文树在处理回文方面真的比manacher要好用得多。。。 #include<iostream> #include<cstdio> #include<cstring> #include<cstdlib> #include<algorithm> #define REP(i,a,b) for(int i 阅读全文
摘要:
len[u]表示结点u所表示的回文串长度,cnt[u]表示结点u所表示的回文串出现次数,num[u]表示结点u的后缀回文串个数(包括自己)。 由于一个字符串本质不同的回文串最多不超过n个,所以空间开n+2即可,算上每个结点的26个Next指针,空间复杂度o(26*n)。时间复杂度o(n)。 stru 阅读全文
摘要:
回文树的裸题。 #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 阅读全文