NYOJ 138

简介:   找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5   描述在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号i(00) pos=(pos+1)%N; ch[pos]=num; } ...

 

找球号(二)

时间限制: 1000 ms | 内存限制: 65535 KB
难度: 5
 
描述
在某一国度里流行着一种游戏。游戏规则为:现有一堆球中,每个球上都有一个整数编号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

 1  
 2 #include<cstdio>
 3 #include<bitset>
 4 #include<cstring>
 5 using namespace std;
 6 
 7 bitset <100000001> Q;
 8 int main()
 9 {
10     char ch[11];
11     int T,m,a,i,j;
12     scanf("%d",&T);
13     while(T--)
14     {
15           //Q.reset();//全部置为0,加上这一句就TLE,不加就AC 
16         scanf("%s%d",ch,&m);
17         if(ch[0]=='A')
18             for(j=0;j<m;j++)
19             {
20                 scanf("%d",&a);
21                 Q[a]=1;
22             }
23        else for(j=0;j<m;j++)
24            {
25                scanf("%d",&a);
26                if(Q[a]==1) printf("YES\n");
27                else printf("NO\n");
28         }
29     }
30 }        
//用hash一定要开大空间,否则可能TLE
//用bitset亦可
//set,使用test方法判断是否存在
/*
set.find(value) == set.end()
就是查找value是否在set里面
如果没找到,就会返回一个指向end()的iterator
*/
 
#include <iostream>
#include <stdio.h>
#include <string>
#include <string.h>
using namespace std;

const int N = 9533333;
const int  ope  =  N;
int ch[N];
//先对素数求余, 不求余,就把数组开大,不然value超过N怎么办

int hashfun(int val)
{
    return val%(ope);
}

void insert(int num)
{
    int pos=hashfun(num);
    while(ch[pos]>0)
        pos=(pos+1)%N;
    ch[pos]=num;
}

bool find(int num)
{
    int pos=hashfun(num);
    int i=0;
    while(ch[pos]&&ch[pos]!=num&&i<N)
        pos=(pos+1)%N;
    if(ch[pos]&&i<N)return 1;
    return 0;
}

int main()
{
    memset(ch,0,sizeof(ch));
    int i,j,k,T;
    scanf("%d",&T);
    int cnt,num;
    string s;
    while(T--)
     {
          s.clear();
        cin>>s;
        scanf("%d",&cnt);
        if(s=="ADD")
          {
            while(cnt--)
               {
                scanf("%d",&num);
                insert(num);
            }
        }
        if(s=="QUERY")
          {
            while(cnt--)
               {
                scanf("%d",&num);
                if(find(num))
                      puts("YES");
                else 
                      puts("NO");
            }
        
        }
    }
    return 0;
}                 

 

目录
相关文章
|
API
NYOJ 540
  为了给学弟学妹讲课,我水了一道题…… import java.util.Arrays; import java.util.Scanner; public class NYOJ540 { public static void main(String[] args) { ...
799 0
|
测试技术
NYOJ 541
  最强DE 战斗力 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 春秋战国时期,赵国地大物博,资源非常丰富,人民安居乐业。但许多国家对它虎视眈眈,准备联合起来对赵国发起一场战争。
751 0
|
JavaScript
NYOJ&#160;17
时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 求一个字符串的最长递增子序列的长度 如:dabdbf最长递增子序列就是abdf,长度为4 输入 第一行一个整数0 随后的n行,每行有一个字符串,该字符串的长度不会超过10000 输出 输出字符串的最长递增子序列的长度 样例输入 3 aaa ababc abklmncdefg 样例输出 1 3 7 题目很经典,学习一下吧。
644 0
NYOJ 506
  洗澡 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Mostrp是个爱干净的好少年。 有一次去澡堂洗澡时发现 澡堂的澡柜编号中没有出现过数字‘4’。
795 0
NYOJ 205
  求余数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数除10003之后的余数   输入 第一行有一个整数m(1T; 13 scanf("%*c")...
666 0
NYOJ 283
1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 /* 9 bool cmp(char *a,char *b) 10...
471 0
|
定位技术
NYOJ 20
  吝啬的国度 时间限制:1000 ms | 内存限制:65535 KB 难度:3   描述 在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
799 0
|
人工智能
NYOJ 55
  懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。
925 0
|
人工智能
NYOJ 95
  众数问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重的重数最大的元素成为众数。
729 0
|
测试技术
NYOJ 202
  红黑树 时间限制:3000 ms | 内存限制:65535 KB 难度:3   描述 什么是红黑树呢?顾名思义,跟枣树类似,红黑树是一种叶子是黑色果子是红色的树。。。 当然,这个是我说的。
797 0