NYOJ-86 找球号(一)AC 分类: NYOJ 2014-02-02 10:45 160人阅读 评论(0) 收藏
NO.1
单纯的傻傻的代码:
#include<stdio.h> long long num[100000005]={0}; int main(){ int n, m, k; scanf("%d%d",&n,&m); while(n--){ scanf("%d",&k); num[k]++; } while(m--){ scanf("%d",&k); if(num[k]!=0) printf("YES\n"); else printf("NO\n"); } return 0; }
NO.2
愤怒的,利用STL向量的代码:
#include<cstdio> #include<vector> using namespace std; int main(){ vector<int> num; int n, m, k; scanf("%d%d",&n,&m); while(n--){ scanf("%d",&k); num.push_back(k); } while(m--){ scanf("%d",&k); for(n=0;n<num.size();n++){ if(num.at(n)==k){ k=-1; break; } } if(k==-1) printf("YES\n"); else printf("NO\n"); } return 0; }
NO.3.
无奈的去寻求帮助后的代码(AC):
# include<stdio.h> # include<stdlib.h> int a[1000001]; int comp(const void * p1,const void * p2) { return *(int *)p1-*(int *)p2; } int search(int i,int j,int n) { int mid; while(i<j) { mid = i+(j-i)/2; if(a[mid] == n) return 1; else if(a[mid]>n) j = mid; else i = mid+1; } return 0; } int main(void) { int n,m,i,t; scanf("%d %d",&m,&n); for(i=0;i<m;i++) scanf("%d",&a[i]); qsort(a,m,sizeof(int),comp); for(i=0;i<n;i++) { scanf("%d",&t); printf(search(0,m-1,t)?"YES\n":"NO\n"); } return 0; }
居然是用qsort排序,加二分法,哇啊啊啊,好吧,败了
版权声明:本文为博主原创文章,未经博主允许不得转载。
本文为博主原创文章,未经博主允许不得转载。