acm成都赛区网络热身赛 Sum
2010-09-16 22:02
281 查看
题目大意:给你一个n和x;n的范围(n<=1000001),n表示有n个数,在这n个数查找是否有两个数之和为x的,如果有就输出“YES”,没有"NO".
Sample Input
Sample Output
YES
NO
最后我编了一组测试数据;
3 16
1 8 16
NO
用二分查找解决,比如第一组测试数据,只要在x-a[i]即可,注意点,要把a[i]标记一下要不然搜索第二个元素时搜到8结果就是YES,其实是错的,开始这个地方欠考虑:虽然一下想到了,但是在敲代码时还是遇到一些小麻烦,最后ko了。
<code>
#include<iostream>
#include<algorithm>
using namespace std;
int a[1000005];
int index;
int Binary_Search(int x,int n)
{
int left=0,right=n-1;
while(left<=right)
{
int middle=(left+right)/2;
if(a[middle]==x&&x!=index)return middle;
if(x>a[middle])left=middle+1;
else right=middle-1;
}
return -1;
}
int main()
{
int n,x,i;
while(cin>>n>>x)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
if(a[0]>=x)
{
cout<<"NO"<<endl;
continue;
}
int flag=0;
for(i=0;i<n,a[i]<x;i++)
{
index=a[i];
if(Binary_Search(x-a[i],n)!=-1)
{
cout<<"YES"<<endl;
flag=1;
break;
}
}
if(!flag)cout<<"NO"<<endl;
}
return 0;
}
Sample Input
3 3 1 2 3 2 3 1 3
Sample Output
YES
NO
最后我编了一组测试数据;
3 16
1 8 16
NO
用二分查找解决,比如第一组测试数据,只要在x-a[i]即可,注意点,要把a[i]标记一下要不然搜索第二个元素时搜到8结果就是YES,其实是错的,开始这个地方欠考虑:虽然一下想到了,但是在敲代码时还是遇到一些小麻烦,最后ko了。
<code>
#include<iostream>
#include<algorithm>
using namespace std;
int a[1000005];
int index;
int Binary_Search(int x,int n)
{
int left=0,right=n-1;
while(left<=right)
{
int middle=(left+right)/2;
if(a[middle]==x&&x!=index)return middle;
if(x>a[middle])left=middle+1;
else right=middle-1;
}
return -1;
}
int main()
{
int n,x,i;
while(cin>>n>>x)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
if(a[0]>=x)
{
cout<<"NO"<<endl;
continue;
}
int flag=0;
for(i=0;i<n,a[i]<x;i++)
{
index=a[i];
if(Binary_Search(x-a[i],n)!=-1)
{
cout<<"YES"<<endl;
flag=1;
break;
}
}
if(!flag)cout<<"NO"<<endl;
}
return 0;
}
相关文章推荐
- 【推导】计蒜客17116 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 c题 sum
- 计蒜客17116 Sum 找规律 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- HDU 4288 Coder 第37届ACM/ICPC 成都赛区网络赛1001题 (线段树)
- HDU 4292 Food 第37届ACM/ICPC 成都赛区网络赛1005题 (最大流)
- HDU 4296 Buildings 第37届ACM/ICPC 成都赛区网络赛1009题 (贪心)
- HDU 4289 Control 第37届ACM/ICPC 成都赛区网络赛1002题 (最大流)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C:sum<简单数学>
- Hdu 4035 Maze (dp求期望) - 2011 ACM/ICPC 成都赛区网络预选赛 1005
- 【 2017 ACM-ICPC 亚洲区(西安赛区)网络赛】C. Sum
- 【ACM-ICPC 2018 南京赛区网络预赛 J】Sum
- 2013年ACM网络赛成都赛区
- C. Sum 数学/规律 2017 ACM-ICPC 亚洲区(西安赛区)网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C.Sum(找规律)
- 计蒜客 17116 Sum(2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C)
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
- hdu 5053 the Sum of Cube---2014acm上海赛区网络赛
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C. Sum
- 2017 ACM-ICPC 亚洲区(西安赛区)网络赛 C.Sum