据说这题很经典噢~开始的分析也经典。题目的分析我就不多说了,具体可以参考:http://blog.csdn.net/chinaczy/article/details/5790107一看就很清楚了(感谢这位博主)。但他用的hash函数我暂时是不能理解,说以没用它的方法。自己写了个简单的hash方法,似乎还挺凑效,然后再处理冲突。一开始时,我是先hash一边,然后再来个for循环来判断每个hash值....TLE。不行啊,然后换了个方法,hash和找最大值同步进行,这样就省去了最后的一次遍历,很能节省时间。还有就是要注意前导的全零,没有的话就WA.我就错了好多次,后来看了discuss才明白的,感谢那里面的大牛。比如测试这个:

4  4     一开始我输出的是零。。才发现没有前导的零。。改了之后AC了。嘿嘿!!不错不错  通过这题,对hash又有了深刻的认识。

1

2

4

8

#include <iostream>
#include <cmath>using namespace std;#define MAX 100001
int a[MAX][31];
int n,k,maxlen=0,dist;struct Hash{int index;bool used;Hash *next;Hash(){index=0; used=false; next=NULL;}
}hash[MAX];bool cmp(int ai,int bi)
{for(int i=0; i<k; i++)if(a[ai][i]!=a[bi][i])return false;return true;
}int main()
{freopen("acm.txt","r",stdin);int i,j,num;scanf("%d%d",&n,&k);for(i=0; i<k; i++)  //第一个放全0
    {a[0][i]=0;}i=1;  while(1){if(i>n)break;scanf("%d",&num);for(j=k-1; j>=0; j--){   //存储每一二进制位a[i][j]=num & 1;num=num>>1;}i++;}int tem;for(i=1; i<=n; i++){for(j=k-1; j>=0; j--){a[i][j]+=a[i-1][j];}}for(i=0; i<=n; i++){tem=a[i][k-1];  //暂存最低位for(j=k-1; j>=0; j--)a[i][j]=abs(a[i][j]-tem);}//转存hashfor(i=0; i<=n; i++){int sum=0;bool flag=false;for(j=0; j<k; j++){sum+=a[i][j]*(j+1);}if(hash[sum].used)  //冲突
         {Hash *tem=&hash[sum];if(cmp(tem->index,i))   //比较是否相等
             {dist=i-hash[sum].index;if(dist>maxlen)maxlen=dist;continue;  //继续下次
             }else{while(tem->next!=NULL){if(cmp(tem->next->index,i)){dist=i-tem->next->index;if(dist>maxlen)maxlen=dist;flag=true;  //已经有相等的break;    //跳出while
                     }tem=tem->next;}}if(!flag)//没有找到相等的
             {Hash *H=new Hash();H->index=i;tem->next=H;}}else //没有冲突
         {hash[sum].index=i;hash[sum].used=true;}}printf("%d\n",maxlen);return 0;
}

转载于:https://www.cnblogs.com/Jason-Damon/archive/2012/04/11/2442750.html

poj 3274 数的哈希相关推荐

  1. LeetCode 1056. 易混淆数(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给定一个数字 N,当它满足以下条件的时候返回 true: 原数字旋转 180° 以后可以得到新的数字. 如 0, 1, 6, 8, 9 旋转 180° 以 ...

  2. LeetCode 246. 中心对称数(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字(或者上下颠倒地看). 请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串 ...

  3. POJ NOI0105-40 数1的个数

    问题链接:POJ NOI0105-40 数1的个数. 总时间限制: 1000ms 内存限制: 65536kB 描述 给定一个十进制正整数n,写下从1到n的所有整数,然后数一下其中出现的数字" ...

  4. POJ 3274 Gold Balanced Lineup(哈希)

    题目链接 很难想.会哈希,但是想不出.需要一个转化,本来是求某一段上的二进制上每一位的1数目相等,转化为找两段相等的,换元可推出公式.最后注意特判.. 1 #include <iostream& ...

  5. 【POJ 3274】Gold Balanced Lineup (stl map )设计hash表,处理碰撞

    题目链接 题目链接 http://poj.org/problem?id=3274 题意 输入每头牛的特征的10进制,若i~j头牛中每个数位的特征相等则满足要求,求所有满足要求的j-i的最大值. 解题思 ...

  6. leetcode 792 匹配子序列的单词数(哈希表+双指针)

    792. 匹配子序列的单词数 中等 282 相关企业 给定字符串 s 和字符串数组 words, 返回  words[i] 中是s的子序列的单词个数 . 字符串的 子序列 是从原始字符串中生成的新字符 ...

  7. 两数相加——哈希表算法

    力扣刷题总结 一.前言 二.两数相加 1.题意 2.示例 3.题目解析 4.官方题解 思路分析 哈希表算法的优势: 思路及算法: 代码分析 C语言代码实现及详细注释说明: python代码实现及详细注 ...

  8. Gold Balanced Lineup - poj 3274 (hash)

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

  9. POJ - 3974 Palindrome(二分+哈希/马拉车)

    题目链接:点击查看 题目大意:给出一个字符串,求字符串中最长的回文子串,这个字串可以包含主串本身 题目分析:这个题就是之前徐州网络赛的那个回文题目的弱化版..那个题目正解是要用回文自动机,但我不会,当 ...

最新文章

  1. 特约专栏丨陈纯院士:大规模动态时序图实时处理技术、平台及应用
  2. live555工程建立与调试
  3. 位运算及在java中的应用整理
  4. 2015-4-20 BAV推广页面修改前后对比-安全网购
  5. mybatis中foreach标签详解
  6. 电脑卡顿不流畅怎么解决_电脑用久了卡怎么办?学会这四招解决你的电脑卡顿问题...
  7. 小程序开发好学吗?需要掌握哪些知识技能?
  8. 去除dataframe中的空行_Word中这些一键操作实在太强了!折腾半天的工作,一秒就能搞定!...
  9. 教你辨别Access用户级安全的两个密码
  10. ae效果英文版翻译对照表_用AE设计动态海报教程
  11. Keil5 解决编译通过显示红叉
  12. IDEA主题设置,自定义主题
  13. Linus 没空实现的功能,开发者做到了:苹果 M1 Mac 成功运行原生 Linux!
  14. java烟花代码详细步骤,一文说清!
  15. CSS3动画入门 CSS动画如何使用(举例说明)
  16. 英语练习95 Computers
  17. mysql单表瓶颈_mysql单表性能瓶颈_优化系列 | 实例解析MySQL性能瓶颈排查定位-云栖社区-阿里云...
  18. python小作业8代码(列表的遍历与嵌套)
  19. MacBook Pro出现kernel_task占用CPU非常高问题
  20. Python---元祖、循环

热门文章

  1. Kafka配置动态SASL_SCRAM认证
  2. 虚拟机linux关机halt,linux关机命令halt
  3. 防老人走失新方法:衣服上缝二维码 走失可扫码回家
  4. DNS安全(一)DNS缓存投毒与防护
  5. 又拿下一块屏幕,中景园2.08寸OLED SH1122 带字库芯片 GT30L32S4W
  6. 电商网站产品需求文档目录
  7. WIFI的2.4GHz与5GHz频段,并非5GHz穿墙能力更差
  8. 各种时间概念的详细解释 恒星时世界时 协调世界时
  9. Flink窗口+触发器 ,实现定时、定量批量写入Hbase不同的表
  10. Cocoapods 黑魔法