NYOJ 138

 

找球号(二)

时间限制: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;
}                 

 

时间: 2024-09-20 05:55:29

NYOJ 138的相关文章

算法题:UVA 138

Street Numbers A computer programmer lives in a street with houses numbered consecutively (from 1) down one side of the street. Every evening she walks her dog by leaving her house and randomly turning left or right and walking to the end of the stre

NYOJ 99单词拼接(有向图的欧拉(回)路)

/* NYOJ 99单词拼接: 思路:欧拉回路或者欧拉路的搜索! 注意:是有向图的!不要当成无向图,否则在在搜索之前的判断中因为判断有无导致不必要的搜索,以致TLE! 有向图的欧拉路:abs(In[i] - Out[i])==1(入度[i] - 出度[i])的节点个数为两个 有向图的欧拉回路:所有的节点都有In[i]==Out[i] */ #include<iostream> #include<cstring> #include<cstdio> #include<

NYOJ 469 擅长排列的小明 II

点击打开链接NYOJ 469 1思路:递推2分析:为了简便起见,我们用Ai代表第i个数字 , 由于A1一直是1,所以A2只能是2或3.假设dp[n]表示1->n这个序列的方案数            1.当A2=2时,从A2到An的排列(2~n)相当于从A1到An-1的排列(1~n-1)(把每个数字都加1),一共有dp[n-1]种情况.            2.当A2=3时,A3可能为2,4,5.                1.当A3=2时,A4一定等于4,此时从A4到An的排列(4~n)

NYOJ 219 An problem about date

点击打开链接NYOJ 219 1题目:                                                                  An problem about date 描述     acm的iphxer经常忘记某天是星期几,但是他记那天的具体日期,他希望你能写个程序帮帮他. 输入     每行有三个整数 year,month,day,日期在1600年1月1日到9600年1月1日之间; 输出     输出对应的星期,用一个整数表示;(星期一到星期六用1

51单片机-使用138译码编写静态数码管程序

问题描述 使用138译码编写静态数码管程序 如何用138译码编写静态数码管的程序?

迅雷for Mac OS X 1.1.1.138正式发布

http://www.aliyun.com/zixun/aggregation/1311.html">迅雷for Mac OS X 1.1.1.138日前正式发布了,支持Mac OS X 10.6/10.7.新版主要修复了之前版本中存在的Bug,针对OS X界面进行了优化,并且更加轻巧,对下载内核也进行了优化. 迅雷for Mac OS X 1.1.1主要特性: ―轻巧:用最小限度的功能集合与交互界面满足用户最大的下载需求: ―全协议支持:支持HTTP\BT\EMULE\THUNDER:

http://211.138.86.20:8080 这个网站 为什么一会上去一会上不去 请帮忙看下

问题描述 请高手帮忙解决以下这个网站http://211.138.86.20:8080谢谢 解决方案 解决方案二:没兴趣看,连个域名都没有解决方案三:上不去打不开解决方案四:你tomcat开服务了没有假设tomcat放在D:tomcatC:>D:D:>cdD:tomcatbinD:tomcatbin>service.batinstall然后运行services.msc,打开tomcat服务类型为自动,并启动服务

138名北京儿科专家为何坐高铁“通勤”,跨城上班?

在国家倡导的医疗.医保.医药"三医"联动下的医改诉求方面,分级诊疗将是改革重点,在智慧城市医疗背景下产生的智能医生工程,正是帮助医生全面提升自身素质,摆脱时间.空间约束提升患者管理能力的重要表现. 病人不动,医生移动 病人不动,医生移动,为了摆脱时间.空间的医疗约束,医院一直都在采取措施,双城工作模式开启就是最好的证明.两年前,保定市儿童医院增挂北京儿童医院的"京字"招牌,成为京津冀协同发展中首家接受跨省托管的公立医院.从北京到保定,150公里的距离,42分钟的高铁

凤凰网高管解读14年Q2财报:移动广告同比增长138%

北京时间8月12日,凤凰网(即"凤凰新媒体",纽约证券交易所代码: FENG)公布2014年第二季度财报.财报显示,截至2014年6月30日,凤凰网总营收为人民币4.11亿元(约合6620万美元),同比增长12.8%.其中净广告营收(扣除广告代理服务费)为人民币2.91亿元(约合4690万美元),同比增长38.9%.第二季度调整后运营利润为人民币8950万元(约合1440万美元),同比增长16.6%:第二季度调整后凤凰新媒体应占净利润为人民币9230万元(约合1490万美元),同比增长