题面

正反各做一遍哈希来判断,然后在两个哈希值里取一个$max/min$做哈希值,然后每次把子串们的哈希插进$set$里,最后统计集合大小,就可以优秀地在$O(nlog^2$ $n)$中出解了

然后我觉得这样太没有理想了,就写了一个挂链哈希表,结果跑的贼慢。。。

我挂链时的区分方法是换模数再模出一个新值,然后这样做的时候注意要和哈希表的基数和模数区分开

 #include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=,M=;
const long long bs=,md=;
const long long bas=,mod=;
long long num[N],hah[N][],huh[N][],pw[N][],val[N];
int p[M],nxt[N],outp[N];
int n,pos,cnt,ans;
long long Ghash(int l,int r,int t)
{
long long mdd=t?mod:md;
long long h1=((hah[r][t]-hah[l-][t]*pw[r-l+][t])%mdd+mdd)%mdd;
long long h2=((huh[l][t]-huh[r+][t]*pw[r-l+][t])%mdd+mdd)%mdd;
return max(h1,h2);
}
bool Fhash(long long has,long long hsh)
{
for(int i=p[has%md];i;i=nxt[i])
if(val[i]==hsh) return true;
return false;
}
void Ihash(long long has,long long hsh)
{
if(Fhash(has,hsh)) return ;
nxt[++cnt]=p[pos=has%md];
val[cnt]=hsh,p[pos]=cnt;
}
int main ()
{
scanf("%d",&n),pw[][]=pw[][]=;
for(int i=;i<=n;i++)
{
scanf("%lld",&num[i]);
pw[i][]=pw[i-][]*bs%md;
pw[i][]=pw[i-][]*bas%mod;
}
for(int i=;i<=n;i++)
{
hah[i][]=(hah[i-][]*bs+num[i])%md;
hah[i][]=(hah[i-][]*bas+num[i])%mod;
}
for(int i=n;i;i--)
{
huh[i][]=(huh[i+][]*bs+num[i])%md;
huh[i][]=(huh[i+][]*bas+num[i])%mod;
}
for(int i=;i<=n;i++)
{
memset(p,,sizeof p); cnt=;
for(int j=;j<=n-i+;j+=i)
Ihash(Ghash(j,j+i-,),Ghash(j,j+i-,));
if(cnt>ans) ans=cnt,outp[outp[]=]=i;
else if(cnt==ans) outp[++outp[]]=i;
}
printf("%d %d\n",ans,outp[]);
for(int i=;i<=outp[];i++)
printf("%d ",outp[i]);
return ;
}

解题:POI 2010 Beads的更多相关文章

  1. [BZOJ 2083] [POI 2010] Intelligence test

    Description 霸中智力测试机构的一项工作就是按照一定的规则删除一个序列的数字,得到一个确定的数列.Lyx很渴望成为霸中智力测试机构的主管,但是他在这个工作上做的并不好,俗话说熟能生巧,他打算 ...

  2. 【POI 2010】反对称 Antisymmetry

    题目: 对于一个 $0/1$ 字符串,如果将这个字符串 $0$ 和 $1$ 取反后,再将整个串反过来和原串一样,就称作「反对称」字符串.比如 $00001111$ 和 $010101$ 就是反对称的, ...

  3. 【POI 2010】 Pilots

    [题目链接] 点击打开链接 [算法] 单调队列 [代码] #include<bits/stdc++.h> using namespace std; #define MAXN 3000010 ...

  4. [ POI 2010 ] Antisymmetry

    \(\\\) \(Description\) 给出一个长度为 \(N\) 的二进制串,定义一个子串是优秀的,当且仅当其正着看,和倒着按位取反后看结果是一样的,求整个串有多少个优秀的子串. \(N\le ...

  5. 【POI 2010】 Antisymmetry

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2084 [算法] manacher [代码] #include<bits/std ...

  6. bzoj 2093 [ Poi 2010 ] Frog —— 滑动窗口 + 倍增

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2093 先处理出每个点第一次会跳到哪里: 开一个长度为 K+1 的窗口(因为第一近的实际是自己 ...

  7. 「POI 2010」Bridges

    题目链接 戳我 \(Solution\) 看到"最大值最小",就知道应该要二分 二分之后,对于每个\(mid\),只要计算小于\(mid\)的边,然后在剩下的图中判断有无欧拉回路 ...

  8. Solution -「POI 2010」「洛谷 P3511」MOS-Bridges

    \(\mathcal{Description}\)   Link.(洛谷上这翻译真的一言难尽呐.   给定一个 \(n\) 个点 \(m\) 条边的无向图,一条边 \((u,v,a,b)\) 表示从 ...

  9. POI题解整合

    我也不知道为啥我就想把POI的题全都放到一篇blog里写完. POI 2005 SAM-Toy Cars 贪心,每次选下次出现最晚的. POI 2006 KRA-The Disks 箱子位置单调,所以 ...

随机推荐

  1. Java中 static、final和static final的特点及区别

    final: final可以修饰:属性,方法,类,局部变量(方法中的变量) final修饰的属性的初始化可以在编译期,也可以在运行时,初始化后不能被改变. final修饰的属性跟具体对象有关,在运行期 ...

  2. 高可用OpenStack(Queen版)集群-11.Neutron计算节点

    参考文档: Install-guide:https://docs.openstack.org/install-guide/ OpenStack High Availability Guide:http ...

  3. 【视频编解码·学习笔记】12. 图像参数集(PPS)介绍

    一.PPS相关概念: 除了序列参数集SPS之外,H.264中另一重要的参数集合为图像参数集Picture Paramater Set(PPS). 通常情况下,PPS类似于SPS,在H.264的裸码流中 ...

  4. 在虚拟机上搭建物理机可访问的web服务(IIS)

    0x0 前言 安装webug4.0的时候突发奇想,想学下如何在虚拟机里搭建网站,然后让主机像访问互联网的网站一样访问虚拟机的网站,为以后渗透测试搭建环境做准备 0x1 虚拟机安装win2003[以防万 ...

  5. (xampp)lampp 下配置https(ssl)自签双向认证以后 apache无法启动解决方案

    自签CA一般是没有应用场景的,因为需要客户端浏览器导入证书才能访问 但是在某些需要内部使用的场景下,确实是一个解决方案 但是在lampp配置了双向认证以后发现 原来自带的管理命令 lampp star ...

  6. java并发编程原理

    一.java内存模型 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样底层细节.此处的变量与Java编程时所说的变量不一样,指包括了实例字段 ...

  7. 点击小图查看大图jQuery插件FancyBox魔幻灯箱

    今日发现一个不错的JQuery插件FancyBox,也许早就有这个插件了,但是没名字,我就暂且叫他魔幻灯箱吧,采用Mac系统的样式.网传主要有以下功能:■弹出的窗口有很漂亮的阴影效果.■关联的对象(就 ...

  8. JVM新生代老年代详解

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  9. 第一讲:SQL语言概述

    SQL语言是集DDL.DML和DCL于一体的数据库语言. SQL语言之DDL:定义数据库 SQL语言之DML:操纵数据库 一.功能概述 SQL语言主要由以下9个单词引导的操作语句来构成,但每一条语句都 ...

  10. 软件工程-东北师大站-第十二次作业(PSP)

    1.本周PSP 2.本周进度条 3.本周累计进度图 代码累计折线图 博文字数累计折线图 4.本周PSP饼状图