题目链接:http://poj.org/problem?id=3274

题意+思路: 点击这里

补充:因为有减法运算,所以可能会造成运算后结果为负数,所以需要把结果统一转换成正数[不然数组下标访问不到负数位置],还有要先把0放入哈希表,不然会出现长度为1但是没有匹配的情况

比如:1 3

     7

结果为1,如果没把0放进哈希表则结果为0

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
#include<cmath>
#include<time.h>
using namespace std;
typedef long long int LL;
const int MAXN=+;
const int MAXK=+;
const int MOD=;
int Num[MAXN][MAXK]; //data storage
struct Node{
int id,Next;
}Cow[MAXN];
int n,k,S[MAXN][MAXK];
int Scnt,Head[MOD];//hash table
void Init(){ //initialization
memset(Head,-,sizeof(Head));
memset(S,,sizeof(S));
Scnt=;
}
void AddNode(int HashN,int idx){
Cow[Scnt].id=idx;
Cow[Scnt].Next=Head[HashN];
Head[HashN]=Scnt++;
}
bool cmp(int idx,int idy){ //compare two array
for(int i=;i<k;i++){
if(S[idx][i]!=S[idy][i]){
return false;
}
}
return true;
}
int solve(){
int ans=;
for(int i=;i<=n;i++){ //insert 0 into the hash table first!
int HashNum=; //i==0 then insert 0 into the hash table because Data from 1 to n
for(int j=;j<k;j++){
HashNum=((HashNum+S[i][j])+MOD)%MOD;
}
for(int j=Head[HashNum];j!=-;j=Cow[j].Next){
if(cmp(i,j)){
ans=max(ans,i-j);
}
}
AddNode(HashNum,i);
}
return ans;
}
void make_S(){//make array S
for(int i=;i<=n;i++){
for(int j=;j<k;j++){
S[i][j]=S[i-][j]+Num[i][j];
}
}
}
void make_C(){ //make array C
for(int j=k-;j>=;j--){
for(int i=;i<=n;i++){
S[i][j]-=S[i][];
}
}
}
int main(){
#ifdef kirito
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int start=clock();
while(~scanf("%d%d",&n,&k)){
Init();
for(int i=;i<=n;i++){
int val;
scanf("%d",&val);
for(int j=;j<k;j++,val/=){
Num[i][j]=val%;
}
}
make_S(); make_C();
printf("%d\n",solve());
}
#ifdef LOCAL_TIME
cout << "[Finished in " << clock() - start << " ms]" << endl;
#endif
return ;
}

POJ 3274 HASH的更多相关文章

  1. Gold Balanced Lineup - poj 3274 (hash)

    这题,看到别人的解题报告做出来的,分析: 大概意思就是: 数组sum[i][j]表示从第1到第i头cow属性j的出现次数. 所以题目要求等价为: 求满足 sum[i][0]-sum[j][0]=sum ...

  2. poj 3274 Gold Balanced Lineup(哈希 )

    题目:http://poj.org/problem?id=3274 #include <iostream> #include<cstdio> #include<cstri ...

  3. POJ 3274 Gold Balanced Lineup(哈希)

    http://poj.org/problem?id=3274 题意 :农夫约翰的n(1 <= N <= 100000)头奶牛,有很多相同之处,约翰已经将每一头奶牛的不同之处,归纳成了K种特 ...

  4. POJ 3349 HASH

    题目链接:http://poj.org/problem?id=3349 题意:你可能听说话世界上没有两片相同的雪花,我们定义一个雪花有6个瓣,如果存在有2个雪花相同[雪花是环形的,所以相同可以是旋转过 ...

  5. POJ 1840 HASH

    题目链接:http://poj.org/problem?id=1840 题意:公式a1x1^3+ a2x2^3+ a3x3^3+ a4x4^3+ a5x5^3=0,现在给定a1~a5,求有多少个(x1 ...

  6. POJ 2785 HASH

    题目链接:http://poj.org/problem?id=2785 题意:给定n行数字,每行4个数分别是a,b,c,d,现在要求能有多少个(a,b,c,d)组合并且和为0 思路:n^2统计所有(a ...

  7. 哈希 poj 3274

    n个牛 二进制最多k位 给你n个数 求max(j-i)&&对应二进制位的和相同 7    1  1  1  倒的 6    0  1  1 7    1  1  1 2    0  1 ...

  8. POJ 3274 Gold Balanced Lineup

    Gold Balanced Lineup Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 10924 Accepted: 3244 ...

  9. POJ 3274 Gold Balanced Lineup 哈希,查重 难度:3

    Farmer John's N cows (1 ≤ N ≤ 100,000) share many similarities. In fact, FJ has been able to narrow ...

随机推荐

  1. SQL如何本地数据库连接服务器的数据库

    当我们本地数据库的数据作为测试的时候,需要服务器上的数据,但是每次都远程服务器打开数据库查看数据是很麻烦的,那么我们如何让本地的数据库连接服务器上的数据库.前提是你本地的数据库的版本必须和服务器上的数 ...

  2. 数据库的日志数据库(_log.ldf)文件太大,如何压缩

    DUMP TRANSACTION TCB WITH NO_LOGBACKUP LOG TCB WITH NO_LOGDBCC SHRINKDATABASE(TCB) 执行这三条语句就可以了,这里的TC ...

  3. PHP工厂模式的研究

    工厂方法模式 把 创造者类 和要生产的 产品类 分离.创建者是一个工厂类,其定义了产品生产的类方法.一般情况下,创建者类的每个子类实例化一个相应的产品子类. 下面是单个产品的实现代码: <?ph ...

  4. C#文件夹和文件操作

    File.Exist(string path)//文件读写FileStream fs=new FileStream(filename, FileMode.Create);BinaryWriter bw ...

  5. Express 4 中如何使用connect-mongo

    正在跟随上面的教程一步一步做,在会话支持那一节中安装 connect-mongo 后,添加: var MongoStore = require('connect-mongo')(express); v ...

  6. httpclient 支持代理和http & https

    import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inpu ...

  7. 读取Spring的配置文件applicationContext.xml的5种方法

    1.利用ClassPathXmlApplicationContext,这种方式配置文件应该放在类包同路径下Java代码: ApplicationContext ct=new ClassPathXmlA ...

  8. solrconfig.xml和schema.xml说明

    1.   solrconfig.xml solrconfig.xml配置文件主要定义了SOLR的一些处理规则,包括索引数据的存放位置,更新,删除,查询的一些规则配置. 1.1.  datadir节点 ...

  9. MYSQL中'TYPE=MyISAM'错误的解决方案

    create 语句后面的TYPE=MyISAM TYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 ,(老版本的MySQL使用TYPE而不是ENGINE(例如,TYP ...

  10. PHP中比较两个时间的大小与日期的差值

    在这里我们全用到时间戳 mktime(hour,minute,second,month,day,year,[is_dst])     其参数可以从右向左省略,任何省略的参数都会被设置成本地日期和时间的 ...