zoukankan      html  css  js  c++  java
  • poj3261

    题解:

    同bzoj1717

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int P1=1318275,P2=1324710,P=1718414;
    int a1[P],num[P],a2[P],flag[P],a[P],inv1[P],inv2[P],n,m;
    int find(int x,int y)
    {
        int k=(long long)x*y%P;
        for (;flag[k]&&(a1[k]!=x||a2[k]!=y);k=(k+1)%P);
        return k;
    }
    int pd(int x)
    {
        memset(a1,0,sizeof a1);
        memset(a2,0,sizeof a2);
        memset(flag,0,sizeof flag);
        memset(num,0,sizeof num);
        inv1[0]=inv2[0]=1;
        for (int i=1;i<=n;i++)inv1[i]=inv1[i-1]*233%P1,inv2[i]=inv2[i-1]*233%P2;
        int p1=0,p2=0;
        for (int i=1;i<=n;i++)
         {
             p1=(p1*233+a[i])%P1;
             p2=(p2*233+a[i])%P2;
             if (i>x)
              {
                  p1=(p1-(long long)a[i-x]*inv1[x]%P1+P1)%P1;
                  p2=(p2-(long long)a[i-x]*inv2[x]%P2+P2)%P2;
              }
             if (i<x)continue;
             int l=find(p1,p2);
             a1[l]=p1;a2[l]=p2;flag[l]=1;
             num[l]++;
             if (num[l]>=m)return 1;
         }
        return 0; 
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        for (int i=1;i<=n;i++)scanf("%d",&a[i]);
        int l=0,r=n;
        while (l<r)
         {
             int mid=(l+r+1)/2;
             if (pd(mid))l=mid;
             else r=mid-1;
         }
        printf("%d
    ",l); 
    }
  • 相关阅读:
    flash 语法 入门
    flash 代码 雪花飘落
    test windows live writer
    网站索引
    [转]jquery入门简介
    forcast iframe 及 四款播放器
    flash
    flash 备忘
    浏览器默认HTML的CSS样式属性
    简单多线程拷贝单文件示例
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/8510272.html
Copyright © 2011-2022 走看看