HDOJ 2141 Can you find it?(二分查找,binary_search())
来源:互联网 发布:园林绿化施工网络 编辑:程序博客网 时间:2024/06/05 14:36
Can you find it?
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others)
Total Submission(s): 17015 Accepted Submission(s): 4331
Problem Description
Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numbers Ai, Bj, Ck, which satisfy the formula Ai+Bj+Ck = X.
Input
There are many cases. Every data case is described as followed: In the first line there are three integers L, N, M, in the second line there are L integers represent the sequence A, in the third line there are N integers represent the sequences B, in the forth line there are M integers represent the sequence C. In the fifth line there is an integer S represents there are S integers X to be calculated. 1<=L, N, M<=500, 1<=S<=1000. all the integers are 32-integers.
Output
For each case, firstly you have to print the case number as the form "Case d:", then for the S queries, you calculate if the formula can be satisfied or not. If satisfied, you print "YES", otherwise print "NO".
Sample Input
3 3 31 2 31 2 31 2 331410
Sample Output
Case 1:NOYESNO
题意:给出A B C三个数列,再给出一个X,问在数列中是否存在元素满足Ai+Bj+Ck=X。
典型的二分查找,先将A B两个集合相加,在使用binary_search()函数进行二分查找。
代码如下:
#include<cstdio>#include<algorithm>using namespace std;int a[510],b[510],c[510],sum[270000];//注意sum数组的下标大小,应大于500*500; int main(){int L,N,M,S,t=1,i,j,x,pos;while(scanf("%d%d%d",&L,&N,&M)!=EOF){for(i=0;i<L;i++) scanf("%d",&a[i]);for(i=0;i<N;i++) scanf("%d",&b[i]); for(i=0;i<L;i++) { for(j=0;j<N;j++) sum[N*i+j]=a[i]+b[j]; } sort(sum,sum+L*N); for(i=0;i<M;i++) scanf("%d",&c[i]); printf("Case %d:\n",t++); scanf("%d",&S); while(S--) { int sign=0; scanf("%d",&x); for(i=0;i<M;i++) { if(binary_search(sum,sum+L*M,x-c[i])) sign=1; } if(sign) printf("YES\n"); else printf("NO\n"); }}return 0;}
1 0
- HDOJ 2141 Can you find it?(二分查找,binary_search())
- hdoj 2141 Can you find it? 【二分查找】
- hdoj-2141 Can you find it?【二分】
- [HDU](2141)Can you find it? ---二分查找(查找)
- HDOJ/HDU 2141 Can you find it? 二分搜索优化
- HDOJ 题目2141 Can you find it?(二分搜索)
- HDOJ Can you find it? 2141(二分搜索)
- HDOJ 2141 Can you find it?(二分)
- HDOJ 2141 Can you find it? (合并&&二分)
- Can you find it? hdu2141 二分查找
- Can you find it? (HDU_2141) 二分查找
- hdu 2141 Can you find it? 二分查找
- hdu 2141 Can you find it? 二分查找 + 数组合并
- hdu 2141——Can you find it(二分查找)
- hdu 2141 Can you find it? (二分查找)
- [ACM] hdu 2141 Can you find it? (二分查找)
- HDU 2141Can you find it(二分查找)
- 二分查找:hdu 2141 Can you find it?
- ThinkPHP3.2.2调试模式下正常访问,关闭调试模式,部署时出现删出缓存第一次没错,第二次开始错误。
- The Genesis of Java Design Patterns
- HDU 5319 Painter
- 逻辑斯底回归的特征、多分类问题及过拟合问题
- IOS开发-tableViewCell 的小demo,group分组。
- HDOJ 2141 Can you find it?(二分查找,binary_search())
- SDK manager无法启动
- vs2010中objectARX工程创建类
- oracle HANA sum等计算函数会自动过滤空值
- CentOS 6.6安装Horizon View Client3.4
- 设计模式C++实现(1)——工厂模式
- leetCode 99.Recover Binary Search Tree(修正二叉搜索树) 解题思路和方法
- 关于字典管理颜色,对颜色进行分类管理的问题
- html js form