POJ 3274 GOLD BALANCED LINEUP(HASH)

来源:互联网 发布:淘宝老酒拍卖会不会假 编辑:程序博客网 时间:2024/05/21 17:00

原文:http://blog.acmj1991.com/?p=616

题意:给你n头牛,同时每头牛不多于m种的特征。然后给你n个数第i个数表示第i头牛的特征,这个数的二进制的第j位表示第i头牛是否有第j个特征。题目要求一个最大的连续的牛,这些牛的每个特征的总和相等

思路:要想每种特征的总和相等就相当于把多余的特征去掉,因此我们首先得找到前j项之和对2^m-1取余相等的数,所以对取余后的数进行hash,并且用数组存下前j想每个特征的总和

#include<stdio.h>#include<string.h> #define maxN 100010#define A 1000000int dp[maxN],head[A+10],key[40],h;struct poin{    int s[35],next;}po[maxN]; int min(int x,int y){return x<y?x:y;}int max(int x,int y){return x>y?x:y;}int query(int x,int i){    int j,m=head[x%A],minn=key[30];    if(m==-1){        po[i].next=-1,head[x%A]=i;        return i;    }    while(1)    {        if(dp[m]==x){            int len=po[i].s[0]-po[m].s[0];            for(j=0;j<h;j++)                if(po[i].s[j]-po[m].s[j]!=len)break;            if(j==h)minn=min(minn,m);        }        if(po[m].next==-1)break;        m=po[m].next;    }    po[i].next=po[m].next;    po[m].next=i;    return minn==key[31]?i:minn;} int main(){    int n,m,a;    memset(head,-1,sizeof(head));    memset(po,0,sizeof(po));    key[0]=1;    for(int i=1;i<=31;i++)        key[i]=key[i-1]*2;    scanf("%d%d",&n,&m);h=m;    m=key[m]-1;    int maxx=0;    query(0,0);    for(int k=1;k<=n;k++)    {        scanf("%d",&a);        for(int i=0;i<h;i++){            po[k].s[i]=po[k-1].s[i];            if(a&key[i])po[k].s[i]++;        }        dp[k]=(dp[k-1]+a)%m;        maxx=max(maxx,k-query(dp[k],k));    }    printf("%d\n",maxx);}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 高一新生数学差怎么办 如果好朋友觉得你成熟阴暗怎么办 被同学抓住把柄敲诈怎么办 初一学生字写的不好怎么办 初二学生字写不好怎么办 宝宝流鼻涕怎么办最简单方法 论文查重中参考文献重复率高怎么办 表格里一行字多怎么办 写作文没有拿稿纸怎么办? 纬创面试英语差怎么办 wifi只有两个人连很差怎么办 孩子写作文老是离体怎么办 高一语文阅读理解不好怎么办 80后90后中国怎么办 小学生毕业了班级家长微信群怎么办 ppt做了没保存怎么办 在中考中作文写在抄镐纸上怎么办 ppt格式刷隐藏了怎么办 ps卡住不动弹了怎么办 画图工具压缩完照片后有白边怎么办 穿滑校服就想自慰怎么办 绿地球叶子变干怎么办 有异物掉入眼中怎么办 有异物掉入眼中应怎么办 有异物掉入眼睛怎么办 空调出风口掉入异物怎么办? 超星尔雅挂科了怎么办 泰拉瑞亚神庙祭坛挖掉了怎么办 泰拉瑞亚不小心把数据删除了怎么办 足球守门员遇到单刀球怎么办 猫见到主人就跑怎么办 手机玩游戏闪屏怎么办 满身起小疙瘩很痒怎么办 出门在外忘记带备用胸罩怎么办 去泰国浮潜近视怎么办 gta5线上马丁任务卡了怎么办 双肩背包黑色的皮子褪色怎么办 lspdfr在游戏里崩溃怎么办 gta5钱超过21亿怎么办 假警察要带走我怎么办 遇到假警察拦车怎么办