题目传送门

  1. /*
  2. 题意:给出一个数,问是否有ai + bj + ck == x
  3. 二分查找:首先计算sum[l] = a[i] + b[j],对于q,枚举ck,查找是否有sum + ck == x
  4. */
  5. #include <cstdio>
  6. #include <algorithm>
  7. #include <cmath>
  8. using namespace std;
  9. typedef long long ll;
  10. const int MAXN = 5e2 + ;
  11. const int INF = 0x3f3f3f3f;
  12. ll a[MAXN], b[MAXN], c[MAXN];
  13. ll sum[MAXN*MAXN];
  14. int tot;
  15. bool my_binary_search(int l, int r, ll k) {
  16. while (l < r) {
  17. int mid = (l + r) >> ;
  18. if (sum[mid] == k) return true;
  19. else if (sum[mid] > k) r = mid;
  20. else l = mid + ;
  21. }
  22. return false;
  23. }
  24. int main(void) { //HDOJ 2141 Can you find it?
  25. //freopen ("HDOJ_2141.in", "r", stdin);
  26. int l, n, m, s, cas = ;
  27. while (scanf ("%d%d%d", &l, &n, &m) == ) {
  28. for (int i=; i<=l; ++i) scanf ("%I64d", &a[i]);
  29. for (int i=; i<=n; ++i) scanf ("%I64d", &b[i]);
  30. for (int i=; i<=m; ++i) scanf ("%I64d", &c[i]);
  31. scanf ("%d", &s);
  32. printf ("Case %d:\n", ++cas);
  33. sort (a+, a++l); sort (b+, b++n); sort (c+, c++m);
  34. tot = ;
  35. for (int i=; i<=l; ++i) {
  36. for (int j=; j<=n; ++j) {
  37. sum[++tot] = a[i] + b[j];
  38. }
  39. }
  40. sort (sum+, sum++tot);
  41. ll mn = a[] + b[] + c[], mx = a[l] + b[n] + c[m];
  42. while (s--) {
  43. ll q; scanf ("%I64d", &q);
  44. if (q < mn || q > mx) {
  45. puts ("NO"); continue;
  46. }
  47. bool flag = false;
  48. for (int i=; i<=m; ++i) {
  49. int p = lower_bound (sum+, sum++tot, q - c[i]) - sum;
  50. if (p < || p > tot) continue;
  51. if (sum[p] + c[i] == q) {
  52. flag = true; puts ("YES"); break;
  53. }
  54. //if (my_binary_search (1, tot, q - c[i])) {
  55. //flag = true; puts ("YES"); break;
  56. //}
  57. }
  58. if (!flag) {
  59. puts ("NO");
  60. }
  61. }
  62. }
  63. return ;
  64. }

二分查找 HDOJ 2141 Can you find it?的更多相关文章

  1. hdoj 2141 Can you find it?【二分查找+暴力】

    Can you find it? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others ...

  2. hdu 2141 Can you find it?(二分查找)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意:查找是否又满足条件的x值. 这里简单介绍一个小算法,二分查找. /* x^2+6*x- ...

  3. hdu 2141 Can you find it?(二分查找变例)

    Problem Description Give you three sequences of numbers A, B, C, then we give you a number X. Now yo ...

  4. Can you find it? HDU - 2141 (二分查找)

    Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...

  5. hdu 2141:Can you find it?(数据结构,二分查找)

    Can you find it? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others ...

  6. HDU 2141 Can you find it?【二分查找是否存在ai+bj+ck=x】

    Give you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate ...

  7. 二分查找+数学 HDOJ 4342 History repeat itself

    题目传送门 题意:计算从1开始到第n个非完全平方数的开方和 分析:设第n个非完全平方数的值为a,x * x < a < (x+1) * (x+1),而且易得(tmp = sqrt (a) ...

  8. 离散化+线段树/二分查找/尺取法 HDOJ 4325 Flowers

    题目传送门 题意:给出一些花开花落的时间,问某个时间花开的有几朵 分析:这题有好几种做法,正解应该是离散化坐标后用线段树成端更新和单点询问.还有排序后二分查找询问点之前总花开数和总花凋谢数,作差是当前 ...

  9. jvascript 顺序查找和二分查找法

    第一种:顺序查找法 中心思想:和数组中的值逐个比对! /* * 参数说明: * array:传入数组 * findVal:传入需要查找的数 */ function Orderseach(array,f ...

随机推荐

  1. 1sting 大数 递推

    You will be given a string which only contains ‘1’; You can merge two adjacent ‘1’ to be ‘2’, or lea ...

  2. Java 添加、更新和移除PDF超链接

    简介 PDF超链接用一个简单的链接包含了大量的信息,满足了人们在不占用太多空间的情况下渲染外部信息的需求.下面将介绍通过Java 在PDF中添加.更新和移除超链接. (一)工具使用: Free Spi ...

  3. Spring在Java Filter注入Bean为Null的问题解决

    在Spring的自动注入中普通的POJO类都可以使用@Autowired进行自动注入,但是除了两类:Filter和Servlet无法使用自动注入属性.(因为这两个归Web容器管理)可以用init(集承 ...

  4. linux下常用快捷方式

    一.终端最常用的快捷键: 1.新建终端窗口:crtl+shift+n 2.终端的切换:shift+左右箭头 3.挂起:crtl+s 4.解除挂起:crtl+q 5.清屏:crtl+l 二.命令行光标移 ...

  5. android学习笔记NO.5

    Intent 能够理解为信使 由Intent来协助完毕android各个组件之间的通讯. 感觉基础薄弱就又复习了一遍基础知识,整理了一遍! gen 保存自己主动生成的R资源目录 gen->com ...

  6. Windows 环境下运用Python制作网络爬虫

    import webbrowser as web import time import os i = 0 MAXNUM = 1 while i <= MAXNUM: web.open_new_t ...

  7. Redis开源项目的终极杀手? ——CRUG解读Redis开源协议变更

    引言: 数据库制造商 Redis Labs 本周将公司开发的Redis 模块从 AGPL 迁移到将 Apache v2.0 与 Commons Clause 相结合的许可证,对许可证涵盖的软件作了限制 ...

  8. “指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单

    Sas安装指南,若拿到可用的sid文件,需要做如下修改. 使用新sid的时候,“指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单”问题解决: 1.进入sas安装包,install_doc ...

  9. 关于微软网站维护培训时遇到的issues:​​​What is WEDCS?

    WEDCS (pronounced “wed-ex”), the Web Events Data Collection Service, is a system for collecting, com ...

  10. cocos2dx 在android平台打开文件问题

        我们有一个项目是基于cocos2dx + lua,在网络部分用到了protobuf, 在初始化protobuf的时候须要读取本地文件,用lua的io.open读取文件在windows,ios上 ...