poj3274 哈希
这题终于让我AC了,其过程之艰辛我不想再回忆了,看了各种代码,一定要注意指针空和非空的问题,再一个要注意边界。
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <stdlib.h>
- #define mod 9967
- int gird[+][];
- int K;
- int cmp(int a,int b){
- int i;
- for(i=;i<K;++i){
- if(gird[a][i]!=gird[b][i])
- return ;
- }
- return ;
- }
- void change(int num,int cnt){
- int CNT=;
- while(num){
- gird[cnt][CNT++]=num%;
- num=num/;
- }
- for(int i=;i<K;++i)
- gird[cnt][i]+=gird[cnt-][i];
- for(int i=;i<K;++i){
- gird[cnt][i]-=gird[cnt][];
- }
- gird[cnt][]=;
- return;
- }
- int sign[mod];
- struct node{
- node *next;
- int pos;
- }p[mod];
- int main(){
- int n,i,j;
- int mmax;
- int value;
- int ttt;
- while(~scanf("%d%d",&n,&K)){
- memset(gird,,sizeof(gird));
- memset(sign,,sizeof(sign));
- node *tmp;
- node *op;
- for(i=;i<mod;++i)
- p[i].next=NULL;
- mmax=;
- p[].next=NULL;
- p[].pos=;
- sign[]=;
- for(i=;i<=n;++i){
- scanf("%d",&ttt);
- change(ttt,i);
- value=;
- for(j=;j<K;++j){
- value+= ( gird[i][j]*j );
- }
- value=int(fabs(value))%mod;
- if(sign[value]==){
- p[value].pos=i;
- sign[value]=;
- continue;
- }else if(sign[value]==){
- tmp=(node *)malloc(sizeof(node));
- tmp->next=NULL;
- tmp->pos=i;
- int ss=;
- op=&p[value];
- while(op!=NULL){
- if( cmp(op->pos,i)== ){
- ss=;
- if( (i-op->pos) > mmax ){
- mmax=i- (op->pos);
- break;
- }
- }
- op=op->next;
- }
- if(ss==) continue;
- op=&p[value];
- while(op->next!=NULL){
- op=op->next;
- }
- op->next=tmp;
- }
- }
- printf("%d\n",mmax);
- /*
- for(i=0;i<=n;++i){
- for(j=0;j<K;++j){
- printf("%d ",gird[i][j]);
- }
- printf("\n");
- }
- */
- }
- return ;
- }
poj3274 哈希的更多相关文章
- poj3274 找平衡数列(哈希加一点数学思维)
题目传送门 题目大意:有n只牛,每只牛有k个属性,接下来n个数字,每个数字的二进制位上的1和0分别表示某种属性的有或者无,然后一个特殊数列就是,一个区间内所有牛的各种属性的总和相等(有e种1属性 e ...
- POJ-3274 Gold Balanced Lineup---hash经典题!
题目链接: https://vjudge.net/problem/POJ-3274 题目大意: 给定多头牛的属性,每头牛的属性由一个非负数表示,该数的二进制表示不会超过K位,它的二进制表示的每一位若为 ...
- [PHP内核探索]PHP中的哈希表
在PHP内核中,其中一个很重要的数据结构就是HashTable.我们常用的数组,在内核中就是用HashTable来实现.那么,PHP的HashTable是怎么实现的呢?最近在看HashTable的数据 ...
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- Java 哈希表运用-LeetCode 1 Two Sum
Given an array of integers, find two numbers such that they add up to a specific target number. The ...
- 网络安全——Base64编码、MD5、SHA1-SHA512、HMAC(SHA1-SHA512)哈希
据说今天520是个好日子,为什么我想起的是502.500.404这些?还好服务器没事! 一.Base64编码 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之 ...
- Oracle 哈希连接原理
<基于Oracle的sql优化>里关于哈希连接的原理介绍如下: 哈希连接(HASH JOIN)是一种两个表在做表连接时主要依靠哈希运算来得到连接结果集的表连接方法. 在Oracle 7.3 ...
- SQL连接操作符介绍(循环嵌套, 哈希匹配和合并连接)
今天我将介绍在SQLServer 中的三种连接操作符类型,分别是:循环嵌套.哈希匹配和合并连接.主要对这三种连接的不同.复杂度用范例的形式一一介绍. 本文中使用了示例数据库AdventureWorks ...
- BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】
3555: [Ctsc2014]企鹅QQ Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 2046 Solved: 749[Submit][Statu ...
随机推荐
- centos nginx环境下删除CI框架Index.php入口遇到404问题
今天在网上百度看了很多文章,想要去掉index.php入口文件有好多方法,自己也照着在网站到根目录下新建了一个.htaccess文件,内容如下: RewriteEngine On RewriteCon ...
- MySQL优化技巧之四(数据库设计中的一些技巧)
1. 原始单据与实体之间的关系 可以是一对一.一对多.多对多的关系.在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体.在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对 ...
- (转)关于rdlc报表的数据源
rdlc 报表字符类数据分为文本数据和表数据,区别就在于文本数据只有一个,表数据可以有多行,然而有很多数据只需要一个传入就可以比如打印某个用户的基本信息,很多信息都是唯一的,如果此时报表传入的数据 ...
- redis在.net架构中的应用(1)--使用servicestack连接redis(转)
引言:作为少有的.net架构下的大型网站,stackoverflow曾发表了一篇文章,介绍了其技术体系,原文链接http://highscalability.com/blog/2011/3/3/sta ...
- .NET 请求被挂起,前端轮询,委托
起因:因项目需要监控方法中计算进度,故而想通过AJAX调用,返回前端显示进度,结果开发中遇到第二个AJAX请求被挂起,需要等到第一个请求(计算)完成后,才会被处理到. 百度种种,知其原因是在Sessi ...
- source insight新建工程,添加文件时出现“no files found”
source insight使用也有一年多时间了,今天出现建工程后添加文件“no files found” 百思不得姐: 后面发现是原工程命名时出现非法字符.重新命名就ok了. 切记切记
- eclipse项目!*图标含义
一 .项目前面有红色!,表示工程中classpath中指向的包路径错误 解决办法: 右键项目名称 BuildPath ---> Configure Build Paht...中,然后上面有几个选 ...
- webstrom配置node环境一张图片说明问题
- poj3253
一道赫夫曼树的经典题目,一直以为这题的代码会很复杂,没想到书中竟描述地如此简单 #include <stdio.h> int n; long long p[20010]; //一道经典的赫 ...
- jQuery.loadTemplate客户端模板
jQuery.Template虽然用起来没有Mustache简洁和方便,还是学习了解一下,做个笔记. 模板可以定义在页面script标签,如下 <script type="text/h ...