题目大意:
  给定一个长度为$n(n\leq200000)$的串$S_{1\sim n}$,选择一个$l$,从$S_1$开始,将$S$分为连续的若干段,使得每一段长度为$l$。令$k$为分出来不同的子串个数(翻转后相同算作相同),求最大的$k$,以及有哪些$l$对应的答案为$k$。

思路:
  枚举长度,求正反两个哈希去重。

 #include<set>
#include<cstdio>
#include<cctype>
#include<vector>
typedef unsigned long long uint64;
inline int getint() {
register char ch;
while(!isdigit(ch=getchar()));
register int x=ch^'';
while(isdigit(ch=getchar())) x=(((x<<)+x)<<)+(ch^'');
return x;
}
const int N=,BASE=;
int a[N];
uint64 pow[N],h1[N],h2[N];
std::set<uint64> set;
std::vector<int> v;
inline uint64 hash1(const int &l,const int &r) {
return h1[r]-h1[l-]*pow[r-l+];
}
inline uint64 hash2(const int &l,const int &r) {
return h2[l]-h2[r+]*pow[r-l+];
}
int main() {
const int n=getint();
for(register int i=;i<=n;i++) a[i]=getint();
for(register int i=;i<=n;i++) h1[i]=h1[i-]*BASE+a[i];
for(register int i=n;i>=;i--) h2[i]=h2[i+]*BASE+a[i];
for(register int i=pow[]=;i<=n;i++) pow[i]=pow[i-]*BASE;
int ans=;
for(register int i=;ans*i<=n;i++) {
set.clear();
int tmp=;
for(register int j=;i+j-<=n;j+=i) {
const int h1=hash1(j,j+i-),h2=hash2(j,j+i-);
if(!set.count(h1)||!set.count(h2)) {
set.insert(h1),set.insert(h2);
tmp++;
}
}
if(tmp>ans) {
ans=tmp;
v.clear();
}
if(tmp==ans) v.push_back(i);
}
printf("%d %lu\n",ans,v.size());
for(register unsigned i=;i<v.size();i++) {
printf("%d%c",v[i]," \n"[i==v.size()-]);
}
return ;
}

最新文章

  1. 解决不能访问远程mysql的问题
  2. codevs 1432 总数统计
  3. LoadRunner 脚本学习 -- 读取文件内容
  4. Linux资源监控命令/工具(调试)
  5. C++ 使用Htmlcxx解析Html内容(VS编译库文件)
  6. C#创建Excel文件并将数据导出到Excel文件
  7. 很反感Java Web 三层框架
  8. async: false的应用.
  9. java学习——集合框架(泛型,Map)
  10. LVM 详解
  11. Java并发编程实战 之 线程安全性
  12. 神经网络(BP)算法Python实现及简单应用
  13. Java多线程(八)——join()
  14. [转]TSVNCache.exe卡死电脑的解决方法
  15. 代码统计工具-cloc
  16. 从svn下载项目,并在tomcat启动
  17. 单例模式多线程安全写法(double-lock-check)
  18. Structs复习 字符编码问题
  19. Python2.7-functools
  20. db2时间函数

热门文章

  1. java 继承小结
  2. CyclicBarrier和CountDownLatch的使用
  3. HDU 3033 组合背包变形 I love sneakers!
  4. ocrosoft Contest1316 - 信奥编程之路~~~~~第三关 问题 C: 挂盐水
  5. 浅谈数据库系统中的cache(转)
  6. MapReduce架构
  7. 【bzoj2079】[Poi2010]Guilds 构造结论题
  8. 如何得到一个接口所有的实现类(及子接口)?例如:Eclipse IDE
  9. Educational Codeforces Round 2 B. Queries about less or equal elements
  10. oracle修改数据遇到的坑