zoukankan      html  css  js  c++  java
  • NYOJ 138找球号(二)

    View Code
      1 /*找球号(二)
      2 
      3  时间限制:1000 ms  |  内存限制:65535 KB 
      4 
      5 难度:5
      6 
      7 描述 在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,还有一个空箱子,现在有两种动作:一种是"ADD",表示向空箱子里放m(0<m<=100)个球,另一种是"QUERY”,表示说出M(0<M<=100)个随机整数ki(0<=ki<=100000100),分别判断编号为ki 的球是否在这个空箱子中(存在为"YES",否则为"NO"),先答出者为胜。现在有一个人想玩玩这个游戏,但他又很懒。他希望你能帮助他取得胜利。
      8 输入第一行有一个整数n(0<n<=10000);
      9  随后有n行;
     10  每行可能出现如下的任意一种形式:
     11  第一种:
     12  一个字符串"ADD",接着是一个整数m,随后有m个i;
     13  第二种:
     14  一个字符串"QUERY”,接着是一个整数M,随后有M个ki;
     15  
     16 输出输出每次询问的结果"YES"或"NO".样例输入2
     17 ADD 5 34 343 54 6 2
     18 QUERY 4 34 54 33 66样例输出YES
     19 YES
     20 NO
     21 NO*/
     22 
     23 
     24 
     25 #include<iostream>
     26 #include<cstdio>
     27 #include<cstring>
     28 using namespace std;
     29 
     30 
     31 #define N 1000000
     32 #define size 1000010
     33 
     34 typedef struct node{
     35     int data;
     36     struct node *next;
     37 }hash,*Hash;
     38 
     39 hash head[size];
     40 
     41 Hash search(hash head[size],int value)
     42 {
     43     int k = value % N;
     44     Hash p = &head[k];
     45     while(p && p->data != value)
     46     {
     47         p = p->next;
     48     }
     49     return p;
     50 }
     51 
     52 void insert(hash head[size],int value)
     53 {
     54     Hash s;
     55     int k = value % N;
     56     if(!search(head,value))
     57     {
     58         s = new node;
     59         s->data = value;
     60         s->next = NULL;
     61         s->next = head[k].next;
     62         head[k].next = s;
     63     }
     64 }
     65 
     66 
     67 int main()
     68 {
     69     //freopen("in.txt","r",stdin);
     70     int T,n,i,value;
     71     char s[7];
     72     for(i=0; i<size; ++i)
     73     {
     74         head[i].next = NULL;
     75         head[i].data = -1;
     76     }
     77     scanf("%d",&T);
     78     while(T--)
     79     {
     80         cin>>s;
     81         scanf("%d",&n);
     82         for(i=0; i<n; ++i)
     83         {
     84             scanf("%d",&value);
     85             if(s[0] == 'A')
     86             {
     87                 insert(head,value);    
     88             }
     89             else
     90             {
     91                 if(search(head,value))
     92                     cout<<"YES\n";
     93                 else
     94                     cout<<"NO\n";
     95             }
     96         }
     97     }
     98     return 0;
     99 }
    100 
    101 //用数组存储也可以,但是空间要求太大了,还可以用位存储来做,不知道怎么弄,也得学习一下……。
  • 相关阅读:
    第二十篇 sys模块
    第十九章 Python os模块,pathlib 判断文件是目录还是文件
    第三篇 Postman之 Tests(后置处理器,断言)
    第十八篇 模块与包--time&random模块&模块导入import(os.path.dirname(os.path.abspath(__file__)))
    Sublime text3最全快捷键清单
    第十七篇 Python函数之闭包与装饰器
    第二篇 Postman的高阶使用之配置全局变量及局部变量的调用及设置方法(手动方法)
    第六篇 常用请求协议之post put patch 总结
    第十六篇 Python之迭代器与生成器
    PCL—低层次视觉—关键点检测(Harris)
  • 原文地址:https://www.cnblogs.com/yaling/p/3000417.html
Copyright © 2011-2022 走看看