HDU 2141 Can you find it? (二分)
题目链接:
Can you find it?
Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others)
Total Submission(s): 38634 Accepted Submission(s): 9395
题目大意:
多组数据输入
第一行是三个序列各自元素的个数
第2,3,4是三个序列
第4行是x的个数
下面的x行是多种情况的x值
分析:
三个序列三个数组,把前面两个数组组合为一个数组
比如1 2 3,1 2 3,这两个序列组合为一个数组‘
1+1,1+2,1+3,2+1,2+2,2+3,3+1,3+2,3+3,
计算一下就是
2,3,4,3,4,5,4,5,6,有重复的但是不用去掉,称这个序列为t
然后与第三个序列组合
1 ,2,3,(第三个序列)
然后将t序列升序排序,t与第三个序列组合的时候,t序列采用二分寻找数据
注意点:
1.不能采用set去重,不然会超内存(第一次遇到超内存,好激动啊啊啊啊啊)
2.对t序列不能采用for循环寻找数据,要采用排好序之后再二分查找数据,不然会超时
代码如下:
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b)
{
return a<b;
}
int main()
{
int n1,n2,n3,n=;
while(~scanf("%d %d %d",&n1,&n2,&n3))
{
int a[n1],b[n2],c[n3];
for(int i=; i<n1; i++)
{
scanf("%d",&a[i]);
}
for(int j=; j<n2; j++)
{
scanf("%d",&b[j]);
}
for(int k=; k<n3; k++)
{
scanf("%d",&c[k]);
}
int xn;
int t[n1*n2];
scanf("%d",&xn);
int x[xn];
for(int i=; i<xn; i++)
{
scanf("%d",&x[i]);
}
int y=;
for(int i=; i<n1; i++)
{
for(int j=; j<n2; j++)
{
int z=a[i]+b[j];
t[y]=z;
y++;
}
}
sort(t,t+(n1*n2),cmp);
printf("Case %d:\n",n);
for(int i=; i<xn; i++)
{
int f=;
for(int k=;k<n3;k++)
{
int l=,h=n1*n2-;
while(l<=h)
{
int mid=(l+h)/; if(t[mid]==x[i]-c[k])
{
f=;
break;
}else if(t[mid]>x[i]-c[k])
{
h=mid-;
}else if(t[mid]<x[i]-c[k])
{
l=mid+;
}
}
if(f==)
break;
}
if(f==)
{
printf("YES\n");
}
else
{
printf("NO\n");
}
}
n++;
}
return ;
}
哈哈哈哈哈哈哈哈哈哈
今天真的是超级开心
不准吐槽。。。。。
。。。。。。。。。。
HDU 2141 Can you find it? (二分)的更多相关文章
- HDU 2141 Can you find it? [二分]
Can you find it? Give you three sequences of numbers A, B, C, then we give you a number X. Now you n ...
- C - 啥~ 渣渣也想找玩数字 HDU - 2141(有序序列枚举 + 二分优化查找)
题目描述 可爱的演演又来了,这次他想问渣渣一题... 如果给你三个数列 A[],B[],C[],请问对于给定的数字 X,能否从这三个数列中各选一个,使得A[i]+B[j]+C[k]=X? 输入 多组数 ...
- hdu 2141 Can you find it?(二分查找)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 题目大意:查找是否又满足条件的x值. 这里简单介绍一个小算法,二分查找. /* x^2+6*x- ...
- hdu 2141 (二分)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java/O ...
- hdu 2141:Can you find it?(数据结构,二分查找)
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...
- 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 ...
- 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 ...
- 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 ...
- Can you find it?(hdu 2141 二分查找)
Can you find it? Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 32768/10000 K (Java/Others ...
随机推荐
- 关于java.lang.NoClassDefFoundError: org/apache/commons/collections/FastHashMap的错误解决办法
在JavaEE开发中,在把配置文件中的数据或用户表单提交上来的数据,封装在相应JavaBean的对象的对应属性中时:在实际开发中,使用第三方法工具包BeanUtils(commons-beanutil ...
- Spring Boot—09通过Form提交的映射
package com.sample.smartmap.controller; import org.springframework.beans.factory.annotation.Autowire ...
- Android 后台线程,timertask实现定期更新时间
简述:这是一类定时功能的原型,用来在后台线程中运行一些定时的服务,比如定时修改时间 知识点: 1. Android多线程的消息通信(handler) 2. Java中时间的获取,以及String的格式 ...
- 实验二:klee处理未建模函数和处理error的方式
首先,能够分析klee源码固然重要.但是目前尚未到那个地步.我按照我的过程,记录和分析我所做的实验. 结论性内容是: 1.klee处理printf传入符号值的情形时,报为error,不会将符号值具体化 ...
- SQL 中Count()的问题
假如一张表中有如下的数据: 当使用select Count(*) from TableName表示获取表中数据记录的条数: 有时候可以通过select Count(列名) from TableName ...
- 封装NSMapTable并简易的使用
封装NSMapTable并简易的使用 NSMapTable是弱引用的字典,可以用来存储对象,该对象消失了也没有关系,对于控制器越级跳转相当有用:) WeakDictionary.h 与 WeakDic ...
- 详细讲解WaterRefreshLoadMoreView的使用
详细讲解WaterRefreshLoadMoreView的使用 效果图: 加载控件的源码在如下网址中:上拉加载下拉刷新控件WaterRefreshLoadMoreView 使用的源码: // // V ...
- windows下PyCharm安装及使用
一.首先安装pycharm,可以参考这篇文章:http://www.jianshu.com/p/042324342bf4 1.win10_X64,其他Win版本也可以. 2.PyCharm版本:Pro ...
- hibernate连接mysql,查询条件中有中文时,查询结果没有记录,而数据库有符合条件的记录(解决方法)
今天在另一台服务器上重新部署了网站,结果出现了以下问题: ——用hibernate做mysql的数据库连接时,当查询条件中有中文的时候,查询结果没有记录,而数据库中是存在符合条件的记录的. 测试了以下 ...
- 单纯形算法 matlab
%单纯形 %目标函数标准化 % min x1-3x2+2x3 %输入参量 N=[3 -1 2;-2 4 0;-4 3 8]; B=eye(3); A=[N B]; cn=[1;-3;2]; cb=ze ...