POJ3274 Gold Balanced Lineup
来源:互联网 发布:中东路事件 知乎 编辑:程序博客网 时间:2024/05/01 18:09
挺值得一做的数据结构题。
个人总感觉能用map做,但是一直wa,所以来用hash了。
不得不说,虽然大家对hash都很熟,但是hash还真挺难写= =(是我蒟蒻了么= =)
#include <cstdio>#include <cstring>#include <cstdlib>#include <ctime>#include <climits>#include <cmath>#include <iostream>#include <string>#include <vector>#include <set>#include <map>#include <list>#include <queue>#include <stack>#include <deque>#include <algorithm>using namespace std;int n,k,ans;int a[32],b[100010][32],t,h;int vis[1000010];int hash(int c[]){ int ret=0; for (int i=1;i<k;i++) ret=(ret<<2+(c[i]>>4)^(c[i]<<10))%1000007; if (ret<0) ret+=1000007; return ret;}int f(int c[],int d){ h=hash(c); while (vis[h]!=-1) { int i; for (i=1;i<k;i++) if (c[i]!=b[vis[h]][i]) break; if (i==k) return vis[h]; h=(h+1)%1000007; } vis[h]=d; return -1;}int main(){ while (scanf("%d%d",&n,&k)==2) { ans=0; memset(vis,-1,sizeof(vis)); memset(a,0,sizeof(a)); memset(b[0],0,sizeof(b[0])); h=hash(b[0]); vis[h]=0; for (int i=1;i<=n;i++) { scanf("%d",&t); for (int j=0;j<k;j++) a[j]+=(t>>j)&1; for (int j=1;j<k;j++) b[i][j]=a[j]-a[0]; t=f(b[i],i); if (t>=0 && i-t>ans) ans=i-t; } printf("%d\n",ans); }return 0;}
- Gold Balanced Lineup poj3274
- POJ3274 Gold Balanced Lineup
- poj3274 Gold Balanced Lineup
- [POJ3274]-Gold Balanced Lineup
- [POJ3274] Gold Balanced Lineup
- poj3274--Gold Balanced Lineup(hash)
- POJ3274《Gold Balanced Lineup》方法:哈希
- POJ3274----Gold Balanced Lineup(黄金平衡)
- POJ3274 -Gold Balanced Lineup- HASH+前缀和
- poj3274——Gold Balanced Lineup
- POJ3274 Gold Balanced Lineup 数组的哈希
- PKU3274 Gold Balanced Lineup
- POJ Gold Balanced Lineup
- 哈希-Gold Balanced Lineup
- Gold Balanced Lineup ( hash )
- Gold Balanced Lineup
- Gold Balanced Lineup POJ
- POJ 3274 Gold Balanced Lineup
- 给网页设计师和前端开发者看的前端性能优化
- 未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。
- Python日期操作
- SVN本地服务器安装
- VC++6.0 显示行号
- POJ3274 Gold Balanced Lineup
- 段式LCD原理
- android编码问题
- Lucene索引过程核心类的简单理解
- Poj 3368 Frequent values
- 简单的程序诠释C++ STL swap
- Extended information for this URL is not available in HttpWatch Basic Edition 的解决方案
- mediaplayer stop called in state 1
- 图书馆联机手写识别系统使用UNIPEN数据库