zoukankan      html  css  js  c++  java
  • Gold Balanced Lineup

      1 #include<cstdio>
      2 #include<cstring>
      3 #include<cmath>
      4 #include <cstdlib>
      5 #define MAXN 100001
      6 using namespace std;
      7 
      8 const int mod=99991;
      9 int sum[MAXN][30];
     10 int f[MAXN][30];
     11 int c[MAXN][30];
     12 int n,k,len;
     13 struct node
     14 {
     15     int xx;
     16     node *next;
     17 };
     18 node *hash[mod];
     19 
     20 bool cmp(int a,int b)
     21 {
     22     for(int j=0; j<k; j++)
     23         if(c[a][j]!=c[b][j])
     24             return false;
     25     return true;
     26 }
     27 
     28 void insert(int x)
     29 {
     30     int key=0;
     31     for(int j=1; j<k; j++)
     32     {
     33         key+=c[x][j]*j;
     34     }
     35     key=abs(key)%mod;
     36     if(!hash[key])
     37     {
     38         node *p1=new node();
     39         p1->xx=x;
     40         hash[key]=p1;
     41     }
     42     else
     43     {
     44         node *p=hash[key];
     45         if(cmp(p->xx,x))
     46         {
     47             int d=x-(p->xx);
     48             if(len<d)
     49                 len=d;
     50             return;
     51         }
     52         else
     53         {
     54             while(p->next)
     55             {
     56                 if(cmp(p->next->xx,x))
     57                 {
     58                     int dd=x-(p->next->xx);
     59                     if(dd>len)
     60                         len=dd;
     61                     return;
     62                 }
     63                 p=p->next;
     64             }
     65             node *pp=new node();
     66             pp->xx=x;
     67             p->next=pp;
     68         }
     69     }
     70     return ;
     71 }
     72 
     73 void inti()
     74 {
     75     for(int i=0; i<k; i++)
     76     {
     77         c[0][i]=0;
     78         sum[0][i]=0;
     79     }
     80     for(int i=0; i<mod; i++)
     81         hash[i]=NULL;
     82 }
     83 
     84 int main()
     85 {
     86     while(scanf("%d%d",&n,&k)!=EOF)
     87     {
     88         inti();
     89         insert(0);
     90         len=0;
     91         int m;
     92         for(int i=1; i<=n; i++)
     93         {
     94             scanf("%d",&m);
     95             for(int j=0; j<k; j++)
     96             {
     97                 f[i][j]=m%2;
     98                 m/=2;
     99                 sum[i][j]=sum[i-1][j]+f[i][j];
    100                 c[i][j]=sum[i][j]-sum[i][0];
    101             }
    102             insert(i);
    103         }
    104         printf("%d
    ",len);
    105     }
    106     return 0;
    107 }
    View Code
  • 相关阅读:
    批处理文件(Batch Files )
    JAVA入门之基础语言
    加载properties文件。Java web
    配置SSM框架
    乐观锁。高并发
    ssh框架中防止出现线程安全的情况。多线程与高并发
    hibernate二级缓存 。高并发
    javaweb把请求保存到队列里。高并发
    springboot+thymeleaf开发
    addResourceHandler与addResourceLocations的理解
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3279844.html
Copyright © 2011-2022 走看看