poj1840 哈希
虽然这题目我曾经在我们学校OJ上做过但是我那时候是用的暴力做的,这次我用的是哈希写的,我写这题目时候开始是在main函数里面写哈希感觉很麻烦很不清晰,然后我换用函数来写,清晰了很多,写完就AC了。用哈希存储前两项的值,然后遍历后三项再去哈希表中寻找这个值在前两项中出现的次数,加起来就OK了。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define aabs(x) (x)>0?(x):-(x)
#define mod 999983
#define t(x) (x)*(x)*(x)
struct node{
int num;
node *next;
int cnt;
}p[mod];
int sign[mod]; void hash(int res){
int key;
key=(aabs(res)) % mod;
node *op;
if(sign[key]==){
p[key].num=res;
p[key].cnt++;
p[key].next=NULL;
sign[key]=;
return;
}else if(sign[key]==){
op=&p[key];
while(){
if(res==op->num){
op->cnt++;
return ;
}
if(op->next!=NULL){
op=op->next;
}else break;
}
}
node *tmp=(node *)malloc(sizeof(node));
tmp->num=res;
tmp->cnt=;
tmp->next=NULL;
op->next=tmp;
return;
}
int find_hash(int res){
int cnt=;
int key=(aabs(res)) % mod;
if(sign[key]==){
return ;
}else if(sign[key]==){
node *op=&p[key];
while(){
if(res+op->num==){
cnt=op->cnt;
}
if(op->next!=NULL){
op=op->next;
}else break;
}
}
return cnt;
} void init(){
memset(sign,,sizeof(sign));
for(int i=;i<mod;++i){
p[i].next=NULL;
p[i].cnt=;
}
return ;
} int main(){
int a1,a2,a3,a4,a5,x1,x2,x3,x4,x5;
int i,j,key;
int res,cnt;
while(~scanf("%d%d%d%d%d",&a1,&a2,&a3,&a4,&a5)){
cnt=;
init();
for(x1=-;x1<=;++x1){
for(x2=-;x2<=;++x2){
if(x1==||x2==) continue;
res=(t(x1))*a1+(t(x2))*a2;
hash(res);
}
} for(x3=-;x3<=;++x3)
for(x4=-;x4<=;++x4)
for(x5=-;x5<=;++x5){
if(x3==||x4==||x5==) continue;
res=t(x3)*a3+t(x4)*a4+t(x5)*a5;
cnt+=find_hash(res);
}
printf("%d\n",cnt);
}
return ;
}
poj1840 哈希的更多相关文章
- poj1840 五项式等于0(哈希)
题目传送门 题意很好懂,注意一下xi不能等于0 思路:智商检测题,一开始想着五重for暴力...Orz,后来移向(把a4a5移到右边)了发现减了1e8数量级的复杂度,再次Orz,所以直接三重循环,记录 ...
- [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 ...
- [bzoj3207][花神的嘲讽计划Ⅰ] (字符串哈希+主席树)
Description 背景 花神是神,一大癖好就是嘲讽大J,举例如下: “哎你傻不傻的![hqz:大笨J]” “这道题又被J屎过了!!” “J这程序怎么跑这么快!J要逆袭了!” …… 描述 这一天D ...
随机推荐
- M2M协议
1, M2M协议 M2M是Machine-to-Machine/Man的简称,是一种以机器终端智能交互为核心的.网络化的应用与服务.M2M协议规定了人机和机器之间交互需要遵从的通信协议.随着科学技术的 ...
- 如何利用svn自动同步更新到网站服务器
我们最终的目的是:当本地提交后,SVN服务器自动更新服务器端指定WEB目录内的文件 实现方法: 找到服务器端 SVN版本库所在的目录(目录名称是Repositories),这个目录是在安装Visual ...
- 服务器网页GZIP压缩怎么配置
服务器网页GZIP压缩怎么配置 服务器网页GZIP压缩怎么配置,GZIP压缩对网页压缩来说最好不过了,下面是IIS下Gzip配置详细操作步骤: 简单来说,IIS6集成了Gzip,只不过 ...
- 基于spring-redis发布订阅模式的实现
redis配置: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http ...
- SQL查询结果增加序号列
--sql 2000 ) ,学号 ,姓名 from tb t --sql 2005 select 序号 = row_number() over(order by 学号),学号 ,姓名 from tb ...
- 九度OJ1008
这道题其实就是一个简单的Dijkstra变形,只是要考虑重边的情况. 当在更新图中点到起点的距离时,将花费p也计算在内:如果长度与之前计算的值相等,则再考虑此时花费p是否会更少,是的话则仍然要更新最短 ...
- 山东省第三届ACM省赛
Solved ID PID Title Accepted Submit A 2407 Impasse (+) 0 0 B 2415 Chess 0 0 C 2414 An interest ...
- java的重载
1.java的重载三种:参数类型不同,构成重载,参数类型不同:::::参数顺序不同构成重载::::::参数个数不同,构成重载
- Android中 View not attached to window manager错误的解决办法
前几日出现这样一个Bug是一个RuntimeException,详细信息是这样子的:java.lang.IllegalArgumentException: View not attached to w ...
- checkbox与文字的间距
1. checkbox在更换了图片后, 与文字的距离有问题, 建议修改background为@null, 去除占据的位置. 2. checkbox的paddingleft可以控制图片和文字的间距.