整数Hash散列总结

2024-09-09 08:32
文章标签 总结 整数 hash 散列

本文主要是介绍整数Hash散列总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

方法:  

 step1  :线性探测

 step2 散列

  当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度

HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数 

const   int  MaxN = 30000 ;
bool    used[MaxN] ;struct  Hash{int  val  ;int  count ;
} ;
Hash HashTable[MaxN] ;int   searchHash(int  n){int x = n  ;while(x < 0)  x += MaxN ;while(x >= MaxN) x -= MaxN ;while(used[x] && HashTable[x].val != n){x++ ;if(x >=MaxN) x -= MaxN ;}return x ;
}void  insertTable(int n){int  id = searchHash(n) ;HashTable[id].val = n ;used[id] = 1  ;HashTable[id].count++ ;
}int   main(){int a , b , c , d , i ,  j  , ans , id ;while(scanf("%d%d%d%d" ,&a , &b ,&c ,&d) != EOF){if(a > 0 && b > 0 && c > 0 && d > 0){puts("0")  ; continue ;}if(a < 0 && b < 0 && c < 0 && d < 0){puts("0")  ; continue ;}memset(used , 0 , sizeof(used)) ;memset(HashTable , 0 , sizeof(HashTable)) ;ans = 0 ;for(i = 1 ; i <= 100 ; i++)for(j = 1 ; j <= 100 ; j++)insertTable(a*i*i + b*j*j) ;for(i = 1 ; i <= 100 ; i++){for(j = 1 ; j <= 100 ; j++){id = searchHash(- c*i*i - d*j*j) ;ans += HashTable[id].count ;}}printf("%d\n" , ans*16) ;}return 0 ;
}


POJ 1186   k1*x1^p1 + k2*x2^p2 + ...+kn*xn^pn = 0  , n <=6 ,  1 <=x <= 150 方程的个数

const int MaxN = 4000000 ;
bool  used[MaxN] ;struct Hash{int  val ;int  count ;
};
Hash HashTable[MaxN] ;int  searchHash(int n){int  x = n ;while(x < 0) x += MaxN ;while(x >= MaxN) x -= MaxN ;while(used[x] && HashTable[x].val != n){if(++x >= MaxN) x -= MaxN ;}HashTable[x].val = n ;return x ;
}void insertTable(int n){int id = searchHash(n) ;HashTable[id].count++ ;used[id] = 1 ;
}int   Pow(int x , int y){int ans = 1 ;for(; y ; y >>= 1 , x *= x){if(y&1)  ans *= x ;}return ans  ;
}int   N , M  , k[7] , p[7]  , mid , ans  ;void  GaoLeft(int id , int sum){if(id == mid){insertTable(sum) ;return ;}for(int i = 1 ; i <= M ; i++)GaoLeft(id+1 , sum + k[id] * Pow(i , p[id])) ;
}void  GaoRight(int id , int sum){if(id == N){int s = -sum ;ans += HashTable[searchHash(s)].count ;return  ;}for(int i = 1 ; i <= M ; i++)GaoRight(id+1 , sum + k[id] * Pow(i , p[id])) ;
}int  main(){int i ;scanf("%d%d" ,&N , &M) ;memset(HashTable , 0 , sizeof(HashTable)) ;for(i = 0 ; i < N ; i++) scanf("%d%d" ,&k[i] , &p[i]) ;mid = N>>1 ;ans = 0 ;GaoLeft(0 , 0) ;GaoRight(mid , 0) ;printf("%d\n" , ans) ;return 0 ;
}

zoj2672  N数,求其子数列为等差数列,且最长并输出。


struct Hash{static const int mask = 0x7fff ;int p[32768] , q[32768] ;  //做p->q的映射map<p , q>void  clear(){memset(q , -1 , sizeof(q)) ;}int & operator[] (int k){  //注意这个引用int i = k & mask ;while(q[i] != -1 && p[i] != k)  i = (i+1) & mask ;p[i] = k ;return q[i] ;}
};int  n , x[3003] ;
short dp[3003][3003] ;void  dfs(int k , int a , int b){if(k == 2){printf("%d %d" , a , b) ;return  ;}dfs(k-1 , b-a , a) ;printf(" %d" , b) ;
}int  main(){int i , j , ans  , L , R  , k  ;while(scanf("%d" ,&n) != EOF){for(i = 1 ; i <= n ; i++)  scanf("%d" ,&x[i]) ;Hash h ;h.clear() ;for(i = 1 ; i <= n ; i++)for(j = i+1 ; j <= n ; j++)dp[i][j] = 2 ;ans = 1  ;for(i = 1 ; i <= n ; i++){for(j = i+1 ; j <= n ; j++){k = h[ x[j] - x[i] ] ;if(k != -1)dp[i][j] = dp[k][i] + 1 ;if(ans < dp[i][j]){ans = dp[i][j] ;L = i ;R = j ;}}h[ x[i] ] = i ;}printf("%d\n" , ans)  ;if(ans == 1)  printf("%d\n" , x[1]) ;else{dfs(ans , x[L] , x[R]) ;puts("") ;}}return 0 ;
}

 






这篇关于整数Hash散列总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150651

相关文章

C# List.Sort四种重载总结

《C#List.Sort四种重载总结》本文详细分析了C#中List.Sort()方法的四种重载形式及其实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录1. Sort方法的四种重载2. 具体使用- List.Sort();- IComparable

SpringBoot项目整合Netty启动失败的常见错误总结

《SpringBoot项目整合Netty启动失败的常见错误总结》本文总结了SpringBoot集成Netty时常见的8类问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一、端口冲突问题1. Tomcat与Netty端口冲突二、主线程被阻塞问题1. Netty启动阻

SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)

《SpringBoot整合Kafka启动失败的常见错误问题总结(推荐)》本文总结了SpringBoot项目整合Kafka启动失败的常见错误,包括Kafka服务器连接问题、序列化配置错误、依赖配置问题、... 目录一、Kafka服务器连接问题1. Kafka服务器无法连接2. 开发环境与生产环境网络不通二、序

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

pycharm跑python项目易出错的问题总结

《pycharm跑python项目易出错的问题总结》:本文主要介绍pycharm跑python项目易出错问题的相关资料,当你在PyCharm中运行Python程序时遇到报错,可以按照以下步骤进行排... 1. 一定不要在pycharm终端里面创建环境安装别人的项目子模块等,有可能出现的问题就是你不报错都安装

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

Spring 依赖注入与循环依赖总结

《Spring依赖注入与循环依赖总结》这篇文章给大家介绍Spring依赖注入与循环依赖总结篇,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. Spring 三级缓存解决循环依赖1. 创建UserService原始对象2. 将原始对象包装成工

MySQL中查询和展示LONGBLOB类型数据的技巧总结

《MySQL中查询和展示LONGBLOB类型数据的技巧总结》在MySQL中LONGBLOB是一种二进制大对象(BLOB)数据类型,用于存储大量的二进制数据,:本文主要介绍MySQL中查询和展示LO... 目录前言1. 查询 LONGBLOB 数据的大小2. 查询并展示 LONGBLOB 数据2.1 转换为十