nyoj 86 找球号(一)
来源:互联网 发布:sql语言外键怎么设置 编辑:程序博客网 时间:2024/05/17 00:13
点击打开链接
找球号(一)
时间限制: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 423 34 46 768 343 3432 4 23 343
- 样例输出
NONOYESYES
这题两种方法,一种简单但速度较慢,一种速度很快,但是要自己维护一棵树
第一种使用stl的set,用时1700MS,代码只有30行,简单易用
#include<iostream>#include<set>#include<string>using namespace std;int main(){set<int> set_num;int n , m;int num;cin >> n;cin >> m;while(n--){cin >> num;set_num.insert (num);}while(m--){cin>>num;if(set_num.count (num))cout<<"YES"<<endl;elsecout<<"NO"<<endl;}return 0;}
第二种方法是自己维护一棵二分查找树,代码写了100多行,比较罗嗦,但用时300ms,差距挺大的
#include<stdio.h>#include<stdlib.h>typedef struct NODE{int num;bool flag;struct NODE * left , *right;}Node;Node haxi[5009];void insert(Node * head , Node * new_node){if(head->flag == 0){head->num = new_node->num;head->flag = 1;free(new_node);}else{for( ; head != NULL; ){if(new_node->num > head->num){if(head->right == NULL){head->right = new_node;return ;}elsehead = head->right;}else if(new_node->num < head->num){if(head->left == NULL){head->left = new_node;return ;}elsehead = head->left;}else{free(new_node);return ;}}}}int search_node(Node * head , int num){if(head->flag == 0)return 0;else{for( ; head != NULL; ){if(num > head->num){if(head->right == NULL)return 0;elsehead = head->right;}else if(num < head->num){if(head->left == NULL)return 0;elsehead = head->left;}elsereturn 1;}}}int main(){int i , j , num;Node * new_node;scanf("%d %d" , &i , &j);while(i--){new_node = (Node *) calloc(1 , sizeof(Node));scanf("%d" , &new_node->num );insert(&haxi[new_node->num % 5009] , new_node);}while(j--){scanf("%d" , &num);if(search_node(&haxi[num % 5009] , num) == 1)printf("YES\n");elseprintf("NO\n");}return 0;}
- NYOJ 86 找球号(一)
- NYOJ 86 找球号(一)
- NYOJ 86 找球号(一)
- nyoj 86 找球号(一)
- NYOJ 86 找球号(一)
- nyoj-86-找球号(一)
- NYOJ 86 找球号(一)
- NYOJ 86 找球号(一)
- nyoj 86 找球号(一)
- NYOJ 86 找球号(一)
- nyoj 86 找球号 (一)
- NYOJ 86 找球号(一)
- NYOJ 86 找球号(一)
- NYOJ-86 找球号(一)
- nyoj 86 找球号(一)
- NYOJ 86 找球号(一)
- nyoj-86 找球号(一)
- NYOJ 86-找球号(一)
- win7下mpich配置及fortran编译(64位及32位)
- C中位域结合对齐(pragma)的例子及解释
- Android-Universal-Image-Loader笔记
- 蠢凸倬迫莱陌罢时录僖
- LeetCode-Minimum Window Substring
- nyoj 86 找球号(一)
- 再次写给我们这些浮躁的程序员
- 删除系统文件及其修复
- iso-开发基础知识-2- MVC 设计模式
- java反射机制 调用android得隐藏api
- 计算机中级考试笔记
- SVN 冲突解决
- 卸载pkg程序
- (Oracle 技能篇) Oracle数据库创建表空间