博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU5183 hash 表
阅读量:4334 次
发布时间:2019-06-07

本文共 1842 字,大约阅读时间需要 6 分钟。

做题的时候忘了 数据结构老师说的hash表了, 用二分找,还好过了, hash 表 对这题 更快一些

1 #include 
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 const int maxn =1000000+10; 8 typedef long long LL; 9 const int MAXN=1000010;10 const int HASH=1000007;11 inline LL read()12 {13 char ch=getchar();LL x=0,f=1;14 while(ch>'9'||ch<'0'){
if(ch=='-')f=-1;ch=getchar();}15 while(ch<='9'&&ch>='0'){x=x*10+ch-'0';ch=getchar();}16 return x*f;17 }18 struct HASHMAP19 {20 int head[HASH],next[MAXN],size;21 LL state[MAXN];22 void init()23 {24 size=0;25 memset(head,-1,sizeof(head));26 }27 bool check(LL val)28 {29 int h=(val%HASH+HASH)%HASH;30 for(int i=head[h];~i;i=next[i])31 if(state[i]==val)return true;32 return false;33 }34 int insert(LL val)35 {36 int h=(val%HASH+HASH)%HASH;37 for(int i=head[h];~i;i=next[i])38 {39 if(val==state[i])40 return 1;41 }42 state[size]=val;43 next[size]=head[h];44 head[h]=size++;45 return 0;46 }47 }H1;48 LL A[maxn];49 LL sum[maxn];50 int main()51 {52 int cas;53 scanf("%d",&cas);54 for(int cc =1; cc<=cas; ++cc){55 int n;56 LL K;57 scanf("%d%I64d",&n,&K);58 bool falg=false;59 for(int i=0; i
=0; i--){71 sum[i]=sum[ i+1 ]+A[ i ]*sig;72 if(sig==1){73 to = sum[i]-K;74 if(H1.check(to)){75 falg=true ; break;76 }77 } else{78 to= -(-sum[i]-K);79 if(H1.check(to)){80 falg=true ; break;81 }82 }83 sig*=-1;84 H1.insert(sum[i]);85 }86 if(falg)87 printf("Yes.\n");88 else printf("No.\n");89 }90 91 return 0;92 }

 

转载于:https://www.cnblogs.com/Opaser/p/4324740.html

你可能感兴趣的文章
Java clone() 浅拷贝 深拷贝
查看>>
深入理解Java虚拟机&运行时数据区
查看>>
02-环境搭建
查看>>
spring第二冲刺阶段第七天
查看>>
搜索框键盘抬起事件2
查看>>
阿里百川SDK初始化失败 错误码是203
查看>>
透析Java本质-谁创建了对象,this是什么
查看>>
BFS和DFS的java实现
查看>>
关于jquery中prev()和next()的用法
查看>>
一、 kettle开发、上线常见问题以及防错规范步骤
查看>>
eclipse没有server选项
查看>>
CRC码计算及校验原理的最通俗诠释
查看>>
QTcpSocket的连续发送数据和连续接收数据
查看>>
使用Gitbook来编写你的Api文档
查看>>
jquery扩展 $.fn
查看>>
Markdown指南
查看>>
influxDB的安装和简单使用
查看>>
JPA框架学习
查看>>
JPA、JTA、XA相关索引
查看>>
机器分配
查看>>