题目传送门

 /*
题意:给出一个数,问是否有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 ;
}

二分查找 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. [thrift] thrift基本原理及使用

    参考文章RPC 基本原理与 Apach Thrift 初体验 RPC基本原理 RPC(Remote Procedure Call),远程过程调用,大部分的RPC框架都遵循如下三个开发步骤: 1. 定义 ...

  2. 【BZOJ4868】期末考试(整数三分)

    题意: 有n位同学,每位同学都参加了全部的m门课程的期末考试,都在焦急的等待成绩的公布.第i位同学希望在第ti天 或之前得知所.有.课程的成绩.如果在第ti天,有至少一门课程的成绩没有公布,他就会等待 ...

  3. Linux下汇编语言学习笔记23 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  4. 深入理解hadoop(二)

    hadoop RPC 网络通信是hadoop的核心模块之一,他支撑了整个Hadoop的上层分布式应用(HBASE.HDFS.MapReduce), Hadoop RPC具有以下几个特性,透明性(用户本 ...

  5. Java函数式接口Function

    Function 提供了一个抽象方法  R apply(T t) 接收一个参数 返回 一个值,还有两个默认方法和一个静态方法 compose 是一个嵌套方法,先执行before.apply() 得到运 ...

  6. NOIP 2010 机器翻译

    P1540 机器翻译 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于 ...

  7. MySQL JDBC URL参数(转)

    MySQL的 JDBC URL格式: jdbc:mysql://[host][,failoverhost...][:port]/[database] » [?propertyName1][=prope ...

  8. SAS学习笔记 - 基本原理与概念

    1.赋值符号 由一个尖括号和一个符号组成,可以从左到右也可以从右到左,即“->”或者“<-”. 赋值号也可以使用等号“=”. 如果对象已经存在,那么原先的值会被覆盖.除了可以赋一个数值,还 ...

  9. cocos2d-x CCScrollView和CCTableView的使用

    在游戏和应用中常常要实现左右滑动展示游戏帮助.以列表显示内容的UI效果,就像android中的Gallery和ListView. 本文通过CCScrollView和CCTableView分别来实现这两 ...

  10. Jenkins + SVN搭建php持续集成

    目标需求 开发提交代码到SVN,jenkins在分发服务器上执行'svn update',分发服务器在把代码同步到webserver,实现持续集成 流程 配置jenkins 一.jenkins所需插件 ...