STL <set>练习
2013-05-25 07:52
399 查看
找球号(一)
时间限制:3000 ms | 内存限制:65535 KB难度:3
描述在某一国度里流行着一种游戏。游戏规则为:在一堆球中,每个球上都有一个整数编号i(0<=i<=100000000),编号可重复,现在说一个随机整数k(0<=k<=100000100),判断编号为k的球是否在这堆球中(存在为"YES",否则为"NO"),先答出者为胜。现在有一个人想玩玩这个游戏,但他又很懒。他希望你能帮助他取得胜利。
输入第一行有两个整数m,n(0<=n<=100000,0<=m<=1000000);m表示这堆球里有m个球,n表示这个游戏进行n次。
接下来输入m+n个整数,前m个分别表示这m个球的编号i,后n个分别表示每次游戏中的随机整数k
输出输出"YES"或"NO"
样例输入
6 4 23 34 46 768 343 343 2 4 23 343
样例输出
NO NO YES YES
代码:
耗时:800ms set的二叉平衡查找树还蛮快!!!
#include <iostream>
#include <set>
#include <cstdio>
using namespace std;
int main()
{
int x,n,m;
set<int> s;
cin>>n>>m;
for(int i=1;i<=n;i++)
{scanf("%d",&x); s.insert(x);}
for(int i=1;i<=m;i++)
{
scanf("%d",&x);
if(s.find(x)!=s.end())
printf("YES\n");
else
printf("YES\n");
}
return 0;
}
#include <stdio.h> #define MAXN 3125010 int vis[MAXN] = {0} ; int main() { int m , n , x ; int i ; scanf("%d%d", &m , &n ) ; for( i = 0 ; i < m ; ++i ) { scanf("%d", &x ) ; vis[ x / 32 ] |= 1 << x % 32 ; } for( i = 0 ; i < n ; ++i ) { scanf("%d", &x ) ; if( vis[ x / 32 ] & ( 1 << x % 32 ) ) printf("YES\n"); else printf("NO\n"); } return 0 ; }
相关文章推荐
- <C++ STL set>集合并,交,差,对称差总结
- redis练习手册<十一>set主要操作函数小结
- STL之<set>
- STL:集合#include <set>
- 一种排序 set<stl> 无重复 + < 符号重载 ==
- vector<bool>STL中的陷阱
- Key Set<hdoj5363>
- C++文本查询程序 定义类管理数据 用智能指针 用StrBlob代替vector<string> C++Primer 练习12.32
- STL的vector<string>的三种简单初始化方式
- 总也记不住的update语法>_< sql update set
- poe.xml 出现web.xml is missing and <failOnMissingWebXml> is set to true的错误
- 【C++ STL】算法 <algorithm>中各种算法解析
- UVa 509 - RAID! <位运算练习>
- SPRING IN ACTION 第4版笔记-第八章Advanced Spring MVC-002-SpringFlow的组件(state\<transition>\<var>\<set>\<evaluate>)
- *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value ‘<Student: 0x8399f70>’
- Java集合转换【List<-->数组、List<-->Set、数组<-->Set、Map-->Set、Map-->List】
- jQuery练习1--给网页中所有的 <p> 元素添加 onclick 事件
- Mybatis的<where><foreach><set>等标签详解
- <<C和指针>>第2章之编程练习心得20140709
- (HDU 5927)Auxiliary Set 思维题 <2016CCPC东北地区大学生程序设计竞赛 - 重现赛 >