当前位置 : 主页 > 编程语言 > java >

nyoj86 找球号(一) set容器和二分 两种解法

来源:互联网 收集:自由互联 发布时间:2022-08-10
两种方法 set容器和二分,不懂set容器看我这一篇文章​​​​ #include stdio.h //set容器查找 #include set using namespace std ; int main () { int n , m , x , i ; set int s ; scanf ( "%d %d" , m , n ); for ( i = 0 ;


两种方法 set容器和二分,不懂set容器看我这一篇文章 ​​​​

#include <stdio.h>//set容器查找
#include <set>
using namespace std;
int main()
{
int n,m,x,i;
set<int>s;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
scanf("%d",&x),s.insert(x);
for(i=0;i<n;i++)
{
scanf("%d",&x);
if(s.find(x)!=s.end())
printf("YES\n");
else
printf("NO\n");
}
return 0;
}


#include <stdio.h>//二分查找
#include <string.h>
#include <algorithm>
using namespace std;
long a[1000005];
void search(long x,long right)
{
long mid,left=0,flag=0;
while(left<=right)
{
mid=(left+right)/2;
if(a[mid]<x)
left=mid+1;
if(a[mid]>x)
right=mid-1;
if(a[mid]==x)
{
flag=1;
printf("YES\n");
break;
}
}
if(!flag)
printf("NO\n");
}
int main()
{
long m,n,i,num;
memset(a,0,sizeof(a));
scanf("%ld %ld",&m,&n);
for(i=0;i<m;i++)
scanf("%ld",&a[i]);
sort(a,a+m);
for(i=0;i<n;i++)
{
scanf("%ld",&num);
search(num,m-1);
}
return 0;
}




【本文转自:防御ddos http://www.558idc.com/stgf.html提供,感谢支持】
上一篇:poj1716 Integer Intervals 贪心
下一篇:没有了
网友评论