POJ 3274 Gold Balanced Lineup (hash)
来源:互联网 发布:php员工数据库设计 编辑:程序博客网 时间:2024/05/22 00:32
点我点我点我!!!
求出前缀和,然后全部减去第一列。
将新的数列哈希求出最远的。
#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <vector>#define maxn 100010#define mod 100007using namespace std;int n,k;int sum[maxn][35];int c[maxn][35];struct Hash{ int dex; int val;}res;vector <Hash> hash[mod];int Abs(int x){ return x>0?x:-x;}bool same(int a,int b){ for(int i=1;i<=k;i++) if(c[a][i] != c[b][i])return false; return true;}int calhash(int index){ int val=0; for(int i=1;i<=k;i++) val+=c[index][i]*i; return Abs(val)%mod;}int ans;void insert(int v,int index){ int pos=v%mod; int len=hash[pos].size(); for(int i=0;i<len;i++) { if(same(index,hash[pos][i].dex)) ans=max(ans,index-hash[pos][i].dex); } res.val=v,res.dex=index; hash[pos].push_back(res);}int main(){ while(scanf("%d%d",&n,&k)!=EOF) { ans=0; for(int i=0;i<mod;i++)hash[i].clear(); for(int i=1,tmp,pos;i<=n;i++) { scanf("%d",&tmp),pos=1; for(int j=1;j<=k;j++)sum[i][j]=sum[i-1][j]; while(tmp) { sum[i][pos++]+=tmp%2; tmp/=2; } } for(int i=1;i<=n;i++) for(int j=1;j<=k;j++) c[i][j]=sum[i][j]-sum[i][1]; for(int i=0;i<=n;i++) { int v = calhash(i); insert(v,i); } printf("%d\n",ans); } return 0;}
0 0
- POJ 3274 Gold Balanced Lineup (hash)
- POJ 3274 Gold Balanced Lineup (hash)
- POJ---3274-Gold Balanced Lineup(hash)
- POJ 3274 Gold Balanced Lineup(HASH)
- POJ 3274 GOLD BALANCED LINEUP(HASH)
- POJ Gold Balanced Lineup(3274)-神Hash
- POJ 3274 - Gold Balanced Lineup(Hash)
- poj 3274 Gold Balanced Lineup(hash)
- poj 3274 Gold Balanced Lineup Hash
- POJ 3274 Gold Balanced Lineup hash
- POJ 3274 Gold Balanced Lineup 数组Hash
- 【POJ】3274 Gold Balanced Lineup 哈希hash
- POJ-3274(hash结构)(Gold Balanced Lineup )
- POJ---3274[Gold Balanced Lineup] 数组的hash
- poj 3274 Gold Balanced Lineup, 链地址hash
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- POJ 3274 Gold Balanced Lineup
- [Android] - 如何写Instrumentation UT Manifest.xml
- 远程登陆VMware虚拟机中的Linux系统
- c++编码规范(一)
- 手机游戏开发关于Cocos2d-x和Unity3d之间的选择(个人见解)
- 技术站点汇总
- POJ 3274 Gold Balanced Lineup (hash)
- tail 命令
- 各种数据库默认端口汇集
- 总结如何反编译Android APK(简化反编译过程)
- 计算一个无符整数中bit位为1的个数
- 使用System.arraycopy()实现数组之间的复制
- JavaKeyStore文件的生成与KeyPair的导出
- Statements and Declarations in Expressions
- 主席树 求区间第k大数(可修改)