HDU2141:Can you find it? (二分)
来源:互联网 发布:puppy linux吧 编辑:程序博客网 时间:2024/06/06 06:59
题解:
给定A,B,C三个集合和X,找是否有A+B+C=X,把A+B合并到一个集合中,然后查找是否有X-C即可
代码
#include <cstdio>#include <queue>#include <cstring>#include <iostream>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <string>#include <set>#include <ctime>#include <cmath>#include <cctype>using namespace std;#define maxn 100000#define LL long longint cas=1,T;LL sum[501*501];int main(){ int an,bn,cn; while (scanf("%d%d%d",&an,&bn,&cn)!=EOF) { LL a[501],b[501],c[501]; for (int i = 0;i<an;i++) scanf("%lld",&a[i]); for (int i = 0;i<bn;i++) scanf("%lld",&b[i]); for (int i = 0;i<cn;i++) scanf("%lld",&c[i]); int k = 0; for (int i = 0;i<an;i++) for (int j = 0;j<bn;j++) { sum[k] = a[i]+b[j]; k++; } sort(sum,sum+k); int xn; printf("Case %d:\n",cas++); scanf("%d",&xn); for (int i = 0;i<xn;i++) { LL temp; scanf("%lld",&temp); int flag = 0; for (int j = 0;j<cn;j++) { flag = upper_bound(sum,sum+k,temp-c[j])-lower_bound(sum,sum+k,temp-c[j]); if (flag) break; } if (!flag) printf("NO\n"); else printf("YES\n"); } } return 0;}
题目
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 3
1 2 3
1 2 3
1 2 3
3
1
4
10
Sample Output
Case 1:
NO
YES
NO
- Can you find it? hdu2141 二分查找
- HDU2141:Can you find it?(二分)
- 二分 hdu2141 Can you find it?
- hdu2141 Can you find it?(二分*)
- HDU2141 Can you find it?(二分)
- HDU2141:Can you find it? (二分)
- hdu2141 Can you find it? (二分)
- HDU2141 Can you find it?(二分)
- HDU2141 Can you find it?
- HDU2141-Can you find it?
- HDU2141-Can you find it?
- hdu2141 Can you find it? (二分查找)
- HDU2141:Can you find it?(二分 + 优化)
- HDU2141.Can you find it?——不同的二分不同的TLE
- CSU-ACM2017暑假集训2-二分搜索 hdu2141- Can you find it?
- Can you find it?---二分
- Can you find it?(二分)
- Can you find it? 【二分】
- JavaScript 自调用匿名函数
- SQL语句优化技巧
- SQL日期操作
- Android面试题3
- 关于栈深度
- HDU2141:Can you find it? (二分)
- 光照相关文章
- iOS消息推送的工作机制
- 正则表达式的使用
- ios基本控件之UIView
- 2016,成为更好的自己
- Panel移动
- Android面试题4
- CentOS6.5安装Beanstalkd队列以及PHP代码测试