BZOJ2081 [Poi2010]Beads
来源:互联网 发布:大数据产业面临的问题 编辑:程序博客网 时间:2024/06/07 03:59
对于每个长度把所有的串拿出来哈希判即可,哈希一个log,由调和级数复杂度是n log^2的
但是这题鬼畜的地方在于哈希……双模双base都被卡了……但是设模98754321,base=2333就能过……
另外有个优化,如果当前长度乘当前最多个数大于n了,那么大于等于当前长度的长度就不可能更新答案了,可以直接break掉
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<ctime>#include<cmath>#include<algorithm>#include<iomanip>#include<vector>#include<map>#include<set>#include<bitset>#include<queue>#include<stack>using namespace std;#define MAXN 200010#define MAXM 1010#define INF 1000000000#define MOD 1000000007#define eps 1e-8#define ll long longchar xB[1<<15],*xS=xB,*xT=xB;#define getc() (xS==xT&&(xT=(xS=xB)+fread(xB,1,1<<15,stdin),xS==xT)?0:*xS++)inline int read(){int x=0,f=1;char ch=getc();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getc();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getc();}return x*f;}int bas=2333;int p=98754321; int h[2][MAXN];int mi[MAXN];int n;int a[MAXN];map<int,bool>H;int ans[MAXN];int anst,ansv;int ANS[MAXN];int get(int x,int l,int r){if(x==0){return ((ll)h[x][r]-(ll)h[x][l-1]*mi[r-l+1]%p+p)%p;}return ((ll)h[x][l]-(ll)h[x][r+1]*mi[r-l+1]%p+p)%p;}int main(){/*freopen("kor12c.in","r",stdin);freopen("dui.txt","w",stdout);//*/int i,j;n=read();for(i=1;i<=n;i++){a[i]=read();}mi[0]=1;for(i=1;i<=n;i++){mi[i]=((ll)mi[i-1]*bas)%p;h[0][i]=((ll)h[0][i-1]*bas+a[i])%p;}for(i=n;i;i--){h[1][i]=((ll)h[1][i+1]*bas+a[i])%p;}for(i=1;i*ansv<=n;i++){H.clear();for(j=1;j+i-1<=n;j+=i){int h0=get(0,j,j+i-1);int h1=get(1,j,j+i-1);if(!H[h0]||!H[h1]){H[h0]=1;H[h1]=1;ans[i]++;}}if(ans[i]>ansv){ansv=ans[i];anst=0;}if(ans[i]==ansv){anst++;}}printf("%d %d\n",ansv,anst);anst=0;for(i=1;i<=n;i++){if(ans[i]==ansv){ANS[++anst]=i;}}for(i=1;i<anst;i++){printf("%d ",ANS[i]);}printf("%d\n",ANS[anst]);return 0;}/**/
0 0
- BZOJ2081: [Poi2010]Beads
- BZOJ2081 [Poi2010]Beads
- BZOJ2081[POI2010] Beads
- BZOJ2081: [Poi2010]Beads 哈希
- bzoj2081: [Poi2010]Beads
- 【bzoj2081】[Poi2010]Beads
- [BZOJ2081][POI2010]Beads(hash)
- Hash Algorithm 初步 & BZOJ2081 POI2010 Beads
- [bzoj2081][POI2010]KOR-Beads(hash)
- 字符串hash+map——BZOJ2081/Luogu3498 [Poi2010]Beads
- bzoj2081 Beads
- 【BZOJ2081】【Poi2010(17th)】Beads RKhash+hash表 请记住这个神一样的数:200019
- POI2010 Beads
- bzoj 2081: [Poi2010]Beads
- 2081: [Poi2010]Beads
- BZOJ P2081[Poi2010]Beads
- bzoj 2081 [Poi2010]Beads
- BZOJ 2081 [Poi2010] Beads
- 详解大端模式和小端模式
- cygwin错误
- C语言解题报告模板
- eclipse 编程快捷键
- POJ1003
- BZOJ2081 [Poi2010]Beads
- 打印二叉树所有的路径
- illegal instruction非法指令Makefile设置CFLAGS = -march=armv6无效解决方法
- [LeetCode]168. Excel Sheet Column Title&171. Excel Sheet Column Number
- 百度搜索引擎的搜索高级语法及应用
- 机器学习1——概率论
- PLSQL学习——例外
- 架构必备:Rate limiting 的作用和常见方式
- Struts2和Struts1的区别