题目链接

描述

在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整数ki(0<=ki<=100000100),分别判断编号为ki 的球是否在这个空箱子中(存在为"YES",否则为"NO"),先答出者为胜。现在有一个人想玩玩这个游戏,但他又很懒。他希望你能帮助他取得胜利。

  • 输入
    第一行有一个整数n(0<n<=10000);随后有n行;每行可能出现如下的任意一种形式:第一种:一个字符串"ADD",接着是一个整数m,随后有m个i;第二种:一个字符串"QUERY”,接着是一个整数M,随后有M个ki;
  • 输出
    输出每次询问的结果"YES"或"NO".
  • 样例输入
    2
    ADD 5 34 343 54 6 2
    QUERY 4 34 54 33 66
  • 样例输出
    YES
    YES
    NO
    NO

分析:

简单的哈希函数的应用,当添加的时候就将他加入到哈希函数中,在添加的时候用数组模拟链表的头插法的思想,定义一个head数组,一个next数组,head相当于一个链表的头节点,指向的是当前结点的下一个节点。

代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
const int Max=1000002;
const int mod=111123;//这个值是看别人的目前我也不了解
int Hash[Max],head[Max],next[Max];//head相当于每一个散列表的头节点,当前节点的下一个节点
int top;
void add(int m)//插入元素
{int key=m%mod;next[top]=head[key];///与头插法的原理一样head[key]=top;Hash[top]=m;top++;
}
bool query(int m)//查询是否与m相同的元素4
{int key=m%mod;for(int i=head[key]; i>-1; i=next[i])///挨着往下找{if(Hash[i]==m)return true;}return false;
}
main()
{int n,m,num;char s[5];scanf("%d",&n);memset(head,-1,sizeof(head));///给head函数赋初值,head[i]=-1表示没有与i有冲突的top=0;while(n--){scanf("%s %d",s,&m);if(s[0]=='A'){for(int i=0; i<m; i++){scanf("%d",&num);add(num);}}else{for(int i=0; i<m; i++){scanf("%d",&num);if(query(num)) printf("YES\n");else printf("NO\n");}}}
}

转载于:https://www.cnblogs.com/cmmdc/p/6731926.html

NYOJ 138 找球号(二) (哈希)相关推荐

  1. NYOJ 138 找球号(二)哈希表

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...

  2. nyoj 86 找球号(一)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描写叙述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每一个球上都有一个整数编号i(0<=i< ...

  3. NOJ --138 找球号(二)

    最基础的哈希表用法,先看所要存的个数,一般都是10N+10的内存,这样相当于十个位置里面有一个,空间是足够的.之前一直一直都是超时,就是因为内存开小的话就会出现死循环,因为存不了那么多个数 #incl ...

  4. NYOJ 题目528 找球号(三)

    找球号(三) 时间限制:2000 ms  |  内存限制:3000 KB 难度:2 描述 xiaod现在正在某个球场负责网球的管理工作.为了方便管理,他把每个球都编了号,且每个编号的球的总个数都是偶数 ...

  5. NYOJ-86 找球号(一)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...

  6. 1299: 【二分查找】找球号

    题目描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说 一个随机整数k(0<=k<=10 ...

  7. nyoj528 找球号(三) set容器的应用

    set容器的用法  具体可以看我的另外一篇stl的应用点击打开链接 #include <stdio.h> #include <set> using namespace std; ...

  8. nyoj-138-找球号(二)----hash算法之除留余数法+vector

    找球号(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=1 ...

  9. nyoj--86--找球号(一)(hashset二分)

    找球号(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 在某一国度里流行着一种游戏.游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=10 ...

最新文章

  1. MyEclipse扩展功能设置(Eclipse代码提示功能)
  2. Machine Learning | (10) 回归算法-岭回归
  3. 与跨国巨头合作,做羊还是做狼? --- 我看SAP取消HAND合作伙伴资格
  4. angularJS 自定义元素和属性
  5. 【自动驾驶】相机标定 疑问总结
  6. VS2005--设置Release模式下调试
  7. mysql ext_RHEL5+postfix+mysql+extmai(源代码)(一)
  8. 中止执行后超过2年_债权人申请强制执行满2年后怎么办?
  9. vue cil安装axios
  10. 铃声截取软件android6,铃声剪辑
  11. Wps的两种论文标注参考文献
  12. Android底层隐私数据,一种Android应用程序隐私数据泄露离线检测方法
  13. (11) IFC中物理文件解析 (Industry Foundation Class)
  14. Confluence 摘要(Excerpt)宏
  15. 蓝牙电话/耳机和蓝牙音乐profile
  16. 利用阿里云容器镜像服务下载gcr.io镜像
  17. 歌词big big no_编程的第二个十年:Big Iron
  18. 混合式步进电机控制器开源系列(一)PCB原理图设计
  19. Base64编码解码C代码实现
  20. 路由交换技术一二章总结

热门文章

  1. Caused by: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (1696 1024)
  2. 出现身份验证错误,要求的函数不受支持,远程计算机:X.X.X.X,这可能是由于CredSSP加密Oracle修正
  3. 3. 吴恩达机器学习课程-作业3-多分类和神经网络
  4. python基础自动化测试_Python自动化测试基础之HelloWorld
  5. JVM stack与Heap的区别
  6. presto cube等复杂聚合函数
  7. 4月12日云栖精选夜读:阿里云黄海宇:窄带高清2.0——让直播更惊艳的魔术
  8. 使用Slim框架创建一个JSON RESTfull API
  9. [react-native]react-native填坑笔记
  10. 多线程中的死锁举例与分析(转)