题目描述 可爱的演演又来了,这次他想问渣渣一题。。。 如果给你三个数列 A[],B[],C[],请问对于给定的数字

X,能否从这三个数列中各选一个,使得A[i]+B[j]+C[k]=X?

输入 多组数据,你应处理到 EOF。 每组数据的第一行是三个数 L, M, N,分别代表数列 A[],B[],C[]

的长度,接下来三行,每行分别是L, M, N 个数,分别代表数列 A[], B[], C[]。

接下来一行包含一个数S,代表有S组询问。之后的S行每行一个数,代表这组询问的 X。 1<=L, N, M<=500, 1<=S<=1000

; 所有的数都在 32 位整数范围内。

输出 首先对于每组数据输出一行“Case T: ”,T代表数据组数。然后每行对应一组询问,如果能够找到一组满足题目所述条件,输出

YES,否则输出 NO。

样例输入
3 3 3
1 2 3
1 2 3
1 2 3
3
1
4
10 样例输出
Case 1:
NO
YES
NO

思路

  • [ ] 题意:给我们三个序列A[] B[] C[ ]长度长度分别是 a,b,c, 问能否在这三个序列中分别找一个数,使它的和相加等于定值x
  • [ ] 分析:这一题两层for循环一定会炸,所以我们要想办法去优化---->请看代码注释

代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std; const int mxn = 505; int main()
{
/* freopen("A.txt","r",stdin); */
int m, n, k;
int a[mxn], b[mxn], c[mxn], d[mxn * mxn];
int Case = 0;
while(scanf("%d %d %d", &m, &n, &k) != EOF)
{
for(int i = 1; i <= m; i ++)
scanf("%d", &a[i]);
for(int i = 1; i <= n; i ++)
scanf("%d", &b[i]);
for(int i = 1; i <= k; i ++)
scanf("%d", &c[i]);
int cnt = 0;
//统计出来所有a、b序列元素相加可能的和
for(int i = 1; i <= m; i ++)
for(int j = 1; j <= n; j ++)
d[cnt ++] = a[i] + b[j];
sort(d, d + cnt); int q, x;
scanf("%d", &q);
printf("Case %d:\n", ++ Case);
while(q --)
{
scanf("%d", &x);
int flag = 0;
for(int i = 1; i <= k; i ++)
{
int l = 0, r = cnt - 1, mid;
//二分去在c中查找某个值使 c[i] + d[mid]== x
while(l <= r)
{
mid = (l + r) >> 1;
if(c[i] + d[mid] == x)
{
flag = 1; break;
}
else if(c[i] + d[mid] < x)
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
if(flag)
break;
}
if(flag)
printf("YES\n");
else
printf("NO\n");
}
}
return 0;
}

C - 啥~ 渣渣也想找玩数字 HDU - 2141(有序序列枚举 + 二分优化查找)的更多相关文章

  1. 你想找的Python资料这里全都有!没有你找不到!史上最全资料合集

    你想找的Python资料这里全都有!没有你找不到!史上最全资料合集 2017年11月15日 13:48:53 技术小百科 阅读数:1931   GitHub 上有一个 Awesome - XXX 系列 ...

  2. Java中用正则表达式找出数字

    Java中用正则表达式找出数字 1.题目    String str = "fjd789klsd908434jk#$$%%^38488545",从中找出78990843438488 ...

  3. 要想找出以“y”结尾的名字

    要想找出以“y”结尾的名字:mysql> SELECT * FROM pet WHERE name LIKE '%y'“_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  4. 要想找出包含“w”的名字

    要想找出包含“w”的名字:mysql> SELECT * FROM pet WHERE name LIKE '%w%'“_”:匹配任何单个字符“%”:匹配任意数目字符(包括零字符)

  5. 找出数字数组中最大的元素(使用Math.max函数)

    从汤姆大叔的博客里看到了6个基础题目:本篇是第1题 - 找出数字数组中最大的元素(使用Match.max函数) 从要求上来看,不能将数组sort.不能遍历.只能使用Math.max,所以只能从java ...

  6. javascript 找出数字数组中最大的数

    找出数字数组中最大的数 var Match = (function(){ var arr = null; var len = 0; return { max:function(arr,len){ ar ...

  7. LeetCode练习4 找出这两个有序数组的中位数

    给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2  ...

  8. python经典算法题目:找出这两个有序数组的中位数

    题目:找出这两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以 ...

  9. T2988 删除数字【状压Dp+前缀和优化】

    Online Judge:从Topcoder搬过来,具体哪一题不清楚 Label:状压Dp+前缀和优化 题目描述 给定两个数A和N,形成一个长度为N+1的序列,(A,A+1,A+2,...,A+N-1 ...

随机推荐

  1. 关于JS的数据类型与转化(自动与强制)

    在我们谈到JS的数据类型转化时,一定会知道分为自动转化和强制转化两种方式吧,通俗来讲,自动就是在某种条件下,电脑浏览器自己会把其他类型的数据转化为相应的数据类型,而强制则是咋们程序员应该手动来做的了, ...

  2. C语言程序设计(十二) 结构体和共用体

    第十二章 结构体和共用体 当需要表示复杂对象时,仅使用几个基本数据类型显然是不够的 根本的解决方法是允许用户自定义数据类型 构造数据类型(复合数据类型)允许用户根据实际需要利用已有的基本数据类型来构造 ...

  3. [android]R.class里有ID,onCreate方法里调用findViewById返回空

    在做android练习,一个新手错误,记录一下: 在练习android权威编程指南时,第5章 第二个Activity部分练习,出现标题问题,代码还原如下: protected void onCreat ...

  4. 用 jQuery 实现表单验证(摘抄)——选自《锋利的jQuery》(第2版)第5章的例题 5.1.5 表单验证

    5.1.5 表单验证 表单(form)作为 HTML 最重要的一个组成部分,几乎在每个网页上都有体现,例如用户提交信息.用户反馈信息和用户查询信息等,因此它是网站管理者与浏览者之间沟通的桥梁.在表单中 ...

  5. 【Python】2.17学习笔记 移位运算符,逻辑运算符

    移位运算符 左移运算符 \(<<\),将对应的二进制数末尾补一颗零,高位自然溢出(遁入虚无 print( 5 << 2 ) 把\(5\)的二进制数左移两位 即把\(101\)变 ...

  6. 雅奇880、990、小土豆调用EPX Studio 编译的DLL的编程方法~

    在雅奇990中,使用“外部文件-调用链接库文件”命令实现与EP的通信,例如: 1.调用链接库文件(取项目文件信息() + '资源文件\Project1.dll', 'Unit1.rpas:Result ...

  7. HTTP 与 HTTPS 的区别以及 HTTPS 建立连接的过程

    HTTP 与 HTTPS 区别 HTTP 明文传输,数据都是未加密的,安全性较差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性较好. 使用 HTTPS 协议需要到 CA(Certifi ...

  8. ijkplayer中遇到的问题汇总

    在做音频播放的时候,很多公司使用的是开源的ijkplayer播放器,ijkplayer底层是基于ffmpeg,在某机型上面可能常常遇到各种问题.今天整理了大家在使用ijkplayer中遇到的问题,以及 ...

  9. eclipse 配置tomcat运行环境

    eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上 1.打开Eclipse,单击“Window”菜单,选择下方的“Preferences”. 2.单击“Server”选项, ...

  10. Vue中使用echarts,ajax请求的远程数据赋值给图表不刷新的问题和解决办法

    问题: vue-cli搭建的项目,在mounted钩子函数里面创建echarts图表,本地模拟数据可以正常显示,但是当将ajax请求的远程数据赋值给图表时,图表并不会刷新. 解决办法: 刚开始以为是v ...