题目传送门

 /*
题意:给出一个数,问是否有ai + bj + ck == x
二分查找:首先计算sum[l] = a[i] + b[j],对于q,枚举ck,查找是否有sum + ck == x
*/
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std; typedef long long ll;
const int MAXN = 5e2 + ;
const int INF = 0x3f3f3f3f;
ll a[MAXN], b[MAXN], c[MAXN];
ll sum[MAXN*MAXN];
int tot; bool my_binary_search(int l, int r, ll k) {
while (l < r) {
int mid = (l + r) >> ;
if (sum[mid] == k) return true;
else if (sum[mid] > k) r = mid;
else l = mid + ;
}
return false;
} int main(void) { //HDOJ 2141 Can you find it?
//freopen ("HDOJ_2141.in", "r", stdin); int l, n, m, s, cas = ;
while (scanf ("%d%d%d", &l, &n, &m) == ) {
for (int i=; i<=l; ++i) scanf ("%I64d", &a[i]);
for (int i=; i<=n; ++i) scanf ("%I64d", &b[i]);
for (int i=; i<=m; ++i) scanf ("%I64d", &c[i]);
scanf ("%d", &s); printf ("Case %d:\n", ++cas);
sort (a+, a++l); sort (b+, b++n); sort (c+, c++m);
tot = ;
for (int i=; i<=l; ++i) {
for (int j=; j<=n; ++j) {
sum[++tot] = a[i] + b[j];
}
}
sort (sum+, sum++tot); ll mn = a[] + b[] + c[], mx = a[l] + b[n] + c[m];
while (s--) {
ll q; scanf ("%I64d", &q);
if (q < mn || q > mx) {
puts ("NO"); continue;
}
bool flag = false;
for (int i=; i<=m; ++i) {
int p = lower_bound (sum+, sum++tot, q - c[i]) - sum;
if (p < || p > tot) continue;
if (sum[p] + c[i] == q) {
flag = true; puts ("YES"); break;
}
//if (my_binary_search (1, tot, q - c[i])) {
//flag = true; puts ("YES"); break;
//}
}
if (!flag) {
puts ("NO");
}
}
} return ;
}

最新文章

  1. 【shell 大系】Linux Shell常用技巧
  2. Unity3D入门
  3. [Maven]Maven详解
  4. 深入理解openstack网络架构(2)----Basic Use Cases
  5. 自学php笔记
  6. (菜鸟要飞系列)四,基于Asp.Net MVC5的后台管理系统(zTree绑定Json数据生成树)
  7. 二分查找or折半查找
  8. Spring AOP应用实例demo
  9. 有一种acm题目叫做,奇葩!
  10. JAVA POI 应用系列(2)--读取Excel
  11. 【highchart】经典问题
  12. Java基础机试题
  13. LeetCode(52)-Remove Linked List Elements
  14. BeanUtils 日期转换(本地格式yyyy-MM-dd)转换成date
  15. webpack安装
  16. 深度学习之GRU网络
  17. DEA和模糊综合评价
  18. GanttProject 项目管理软件的优点
  19. mongodb相关文章
  20. ELK收集Nginx|Tomcat日志

热门文章

  1. Android 4.4.2上与BLE 蓝牙锁设备的通讯
  2. redis持久化机制【十三】
  3. hdu - 1254 推箱子 (bfs+bfs)
  4. POJ 3083_Children of the Candy Corn
  5. 洛谷—— P1690 贪婪的Copy
  6. Minimum Depth of Binary Tree(二叉树DFS)
  7. python爬虫实现原理
  8. operamasks—omMessageBox的使用
  9. substring详细用法,截取不行就用替换
  10. linux 下使用genymotion