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. 

InputThere 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. 
OutputFor 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 题目大意:输入3个数组,3个数组中的元素相加,判断是否能得到x;
题目的输入输出有点恶心人,,,写的时候弄的我晕 ,,哇了好几次
思路 :一开始想到的是暴力枚举,,但是肯定会TLE 看了一下大佬们的博客,,用二分法方便一点 就是让A+B构成一个新的数组sum,x-c[i]构成一个新的数组cc,然后在sum中查找是否存在cc中的元素有的话返回YES否则返回NO
AC代码:(本人不太擅长二分所以代码质量不高)
#include<iostream>
#include<algorithm>
using namespace std;
int a[];
int b[];
int c[];
int sum[*+];
int pos;
int judge(int x){ if(x<sum[]||x>sum[pos-]) return ; int low=,high=pos-;
while(low<=high){
int mid=(high+low)/;
// cout<<mid<<endl;
if(sum[mid]>x){
high=mid-;
}
else if(sum[mid]<x) low=mid+;
else {
return ;
}
}
return ;
} int main()
{
int l,m,n,ll=;
while(cin>>l>>m>>n)
{
ll++;
for(int i=;i<l;i++)
cin>>a[i];
for(int j=;j<m;j++)
cin>>b[j];
for(int k=;k<n;k++)
cin>>c[k]; pos=;
for(int i=;i<l;i++)
for(int j=;j<m;j++){
sum[pos++]=a[i]+b[j];
}
sort(sum,sum+pos); int xx;
cin>>xx; printf("Case %d:\n",ll); for(int i=;i<=xx;i++){
int x,flag=;
cin>>x;
for(int i=;i<n;i++){
if(judge(x-c[i])){
flag=;
break;
}
} if(flag)
printf("YES\n");
else printf("NO\n"); }
}
return ;
}

G - Can you find it? 二分的更多相关文章

  1. codeforces 589G G. Hiring(树状数组+二分)

    题目链接: G. Hiring time limit per test 4 seconds memory limit per test 512 megabytes input standard inp ...

  2. G. Of Zorcs and Axes 二分 + 贪心 —— STL的用法

    http://codeforces.com/gym/101149/problem/G 一开始还以为要用二分图去做,但是复杂度也太高了,O(n * m)的话直接爆炸. 考虑贪心,考虑第i个东西优先选一个 ...

  3. Educational Codeforces Round 37 G. List Of Integers (二分,容斥定律,数论)

    G. List Of Integers time limit per test 5 seconds memory limit per test 256 megabytes input standard ...

  4. ACM-ICPC 2018 南京赛区网络预赛 G. Lpl and Energy-saving Lamps(二分+线段树区间最小)

    During tea-drinking, princess, amongst other things, asked why has such a good-natured and cute Drag ...

  5. 洛谷——P3939 数颜色(暴力vecotr+二分)

    P3939 数颜色 $vecotr$里二分就是好用,全是$STL$ 颜色数目比较少,可以对每一种颜色弄一个$vector$记录一下,查找$l,r$内颜色数为$x$的兔子数,直接在$G[x]$这个$ve ...

  6. POJ3189二分最大流(枚举下界,二分宽度,最大流判断可行性)

    题意:       有n头猪,m个猪圈,每个猪圈都有一定的容量(就是最多能装多少只猪),然后每只猪对每个猪圈的喜好度不同(就是所有猪圈在每个猪心中都有一个排名),然后要求所有的猪都进猪圈,但是要求所有 ...

  7. noip2016十连测round2

    A: Divisors 题意:给定 m 个不同的正整数 a 1 ,a 2 ,...,a m ,请对 0 到 m 每一个 k 计算,在区间 [1,n] 里有多少正整数 是 a 中恰好 k 个数的约数. ...

  8. POJ 2728 Desert King ★(01分数规划介绍 && 应用の最优比率生成树)

    [题意]每条路径有一个 cost 和 dist,求图中 sigma(cost) / sigma(dist) 最小的生成树. 标准的最优比率生成树,楼教主当年开场随手1YES然后把别人带错方向的题Orz ...

  9. POJ 1631 Bridging signals(LIS O(nlogn)算法)

    Bridging signals Description 'Oh no, they've done it again', cries the chief designer at the Waferla ...

随机推荐

  1. Smallest Range II

    2020-01-21 21:43:52 问题描述: 问题求解: 这个题目还是有点难度的,感觉很巧妙也很难想到. 整体的思路如下: 1. 首先原问题等价于 +0 / + 2*K 2. 那么res = M ...

  2. linux pdftk

    部分内容来源网络,如有版权问题,请联系删除: http://xuqin.blog.51cto.com/5183168/1117780,   http://blog.sina.com.cn/s/blog ...

  3. OpenCV-Python 形态学转换 | 十七

    目标 在这一章当中, 我们将学习不同的形态学操作,例如侵蚀,膨胀,开运算,闭运算等. 我们将看到不同的功能,例如:cv.erode(),cv.dilate(), cv.morphologyEx()等. ...

  4. 移动深度学习 Mobile-deep-learning(MDL)

    Free and open source mobile deep learning framework, deploying by Baidu. This research aims at simpl ...

  5. 好记性-烂笔头:JDK8流操作

    1):对象 List<User> 转 Map<String,Object> 案例如下: public class User { private Integer id; priv ...

  6. 高并发解决方案限流技术-----使用RateLimiter实现令牌桶限流

    1,RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率.通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位 ...

  7. intelliJ IDEA 教育版下载教程

    ​声明:本教程针对的是在校本科大学生及以上学历学生群体,因为申请账号需要学校的邮箱来进行验证,所以"社会人士"为了对的起"社会"这两个字,还是花点钱买个正版吧! ...

  8. NKOJ3751 扫雷游戏

    问题描述 有一款有趣的手机游戏.棋盘上有n颗地雷,玩家需要至少扫掉其中的k颗雷.每一步,玩家可以用手指在手机屏幕上划一条直线,该直线经过的地雷都会被扫除掉.问,最少需要划几次就能扫除k颗以上的地雷? ...

  9. 根据银行卡号 获取银行名称及银行logo

    根据银行卡号码获取银行卡归属地信息接口地址: https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?_input_charset=utf-8 ...

  10. Linux基础:Day06

    网路安全介绍背景: 早起的互联网 -- 1980年代 ,我们需要共享数据,传输数据:所传输或者共享的数据均为明文: 随着互连网发展,安全称为了国家的一种战略资源: 我们做的,比如编程,运维 -- 手工 ...