2018.07.08 NOIP模拟 第K小数(二分)
第K小数
题目背景
SOURCE:NOIP2016-AHSDFZ T1
题目描述
有两个正整数数列,元素个数分别为 N 和 M 。从两个数列中分别任取一个数相乘,这样一共可以得到 N*M 个数,询问这 N*M 个数中第 K 小数是多少。
输入格式
第一行为三个正整数 N,M 和 K 。
第二行为 N 个正整数,表示第一个数列。
第三行为 M 个正整数,表述第二个数列。
输出格式
输出包含一行,一个正整数表示第 K 小数。
样例数据 1
输入
2 3 4
1 2
2 1 3
输出
3
样例数据 2
输入
5 5 18
7 2 3 5 8
3 1 3 2 5
输出
16
备注
【数据规模与约定】
这次考试差点爆0" role="presentation" style="position: relative;">00(惊了*1),这道一(简)眼(单)题考试竟然写挂了,30" role="presentation" style="position: relative;">3030分滚粗,下来后听说我的方法可以过70" role="presentation" style="position: relative;">7070(惊了*2),然后 讲讲这道题怎么做吧。
70" role="presentation" style="position: relative;">7070算法很好想,二分第k" role="presentation" style="position: relative;">kk大取值,然后用upperbound" role="presentation" style="position: relative;">upperboundupperbound统计mid" role="presentation" style="position: relative;">midmid大的数的个数,然后就70" role="presentation" style="position: relative;">7070分了。
然而这个算法的时间效率并不优秀,我们要想办法去掉一个log" role="presentation" style="position: relative;">loglog,观察到check" role="presentation" style="position: relative;">checkcheck时随着一个数组中的值的增大,另一个数列中可以满足ai∗bj" role="presentation" style="position: relative;">ai∗bjai∗bj成立的j" role="presentation" style="position: relative;">jj的个数单调不升,这样的话我们没必要用upperbound" role="presentation" style="position: relative;">upperboundupperbound,直接利用单调性统计就行了。
代码如下:
#include<bits/stdc++.h>
#define ll long long
#define N 200005
using namespace std;
int n,m,a[N],b[N];
ll k;
inline ll read(){
ll ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+ch-'0',ch=getchar();
return ans;
}
inline ll check(ll k){
ll up=m,cnt=0;
for(int i=1;i<=n;++i){
ll v=k/a[i];
while(up&&b[up]>v)--up;
cnt+=up;
}
return cnt;
}
int main(){
n=read(),m=read(),k=read();
for(int i=1;i<=n;++i)a[i]=read();
for(int i=1;i<=m;++i)b[i]=read();
sort(a+1,a+n+1),sort(b+1,b+m+1);
ll l=a[1]*(ll)b[1],r=a[n]*(ll)b[m];
while(l<r){
ll mid=l+r>>1;
if(check(mid)>=k)r=mid;
else l=mid+1;
}
printf("%lld",l);
return 0;
}
2018.07.08 NOIP模拟 第K小数(二分)的更多相关文章
- 2018.07.08 NOIP模拟 好数(线段树)
好数 题目背景 SOURCE:NOIP2016-AHSDFZ T3 题目描述 我们定义一个非负整数是"好数",当且仅当它符合以下条件之一: 1. 这个数是 0 或 1 . 2. 所 ...
- 2018.07.08 NOIP模拟 ABCD(背包)
ABCD 题目背景 SOURCE:NOIP2016-AHSDFZ T2 题目描述 有 4 个长度为 N 的数组 a,b,c,d .现在需要你选择 N 个数构成数组e ,数组e 满足 a[i]≤e[i] ...
- EZ 2018 07 06 NOIP模拟赛
又是慈溪那边给的题目,这次终于没有像上次那样尴尬了, T1拿到了较高的暴力分,T2没写炸,然后T3写了一个优雅的暴力就203pts,Rank3了. 听说其它学校的分数普遍100+,那我们学校还不是强到 ...
- 2018.10.08 NOIP模拟 序列(主席树)
传送门 T2防ak题? 其实也不是很难(考试时sb了). 直接变形一下求出区间长度在[l2,r2][l2,r2][l2,r2]之间,中位数≤l1−1\le l1-1≤l1−1的区间数,和区间长度在[l ...
- 2018.11.08 NOIP模拟 班车(倍增+dfs+bit)
传送门 对于每个点离线处理出向上走2i2^i2i班车到的最上面的点. 然后每个询问(u,v)(u,v)(u,v)先把(u,v)(u,v)(u,v)倍增到刚好走不到lcalcalca的情况(有一个点如果 ...
- 2018.11.08 NOIP模拟 水管(简单构造)
传送门 仔细读题会发现只要所有点点权之和等于0一定有解. 如何构造? 直接当做树来构造就行了,非树边都赋值成0就行. 代码
- 2018.11.08 NOIP模拟 景点(倍增+矩阵快速幂优化dp)
传送门 首先按照题意构造出转移矩阵. 然后可以矩阵快速幂求出答案. 但是直接做是O(n3qlogm)O(n^3qlogm)O(n3qlogm)的会TTT掉. 观察要求的东西发现我们只关系一行的答案. ...
- 2018.10.08 NOIP模拟 栅栏(树状数组+rand)
传送门 今天的送分题. 首先考虑每次给要围上栅栏的矩阵里的整体加上1,如果栅栏被撤销就整体减1,最后比较两个点的值是否相同来进行判断. 然而这样的效果并不理想,很容易卡掉. 进一步思考,我们第iii次 ...
- 2018.10.08 NOIP模拟 斐波那契(贪心+hash/map)
传送门 签到题. 显然是可以贪心分组的,也就是尽量跟当前的分成一组. 这时我们需要判断a[l]+a[r],a[l+1]+a[r]...a[r−1]+a[r]a[l]+a[r],a[l+1]+a[r]. ...
随机推荐
- linux 关于数据库的部分命令
开启数据库服务 service mysqld start 关闭数据库服务 service mysqld stop 链接数据库 mysql -h localhost -u root -p 回车然后输入密 ...
- 机器学习入门-交叉验证选择参数(数据切分)train_test_split(under_x, under_y, test_size, random_state), (交叉验证的数据切分)KFold, recall_score(召回率)
1. train_test_split(under_x, under_y, test_size=0.3, random_state=0) # under_x, under_y 表示输入数据, tes ...
- js--语音播报
一.借用百度接口 function speckText(){ var str = "请及时预警!"; //var request= new URLRequest(); var ur ...
- vue基础——组件(组件嵌套)
介绍 vue中页面是由组件组成的,即以.vue结尾的文件. .vue文件由三部分组成,分别是template.script.style. 分别写html.js.css代码. 组件之间可以互相嵌套.所以 ...
- 疯狂java——第一章 java语言概述与开发环境
J2ME: 主要用于控制移动设备和信息家电等有限存储的设备. J2SE: 整个java技术的核心和基础,它是J2ME和J2EE编程的基础. J2EE: Java技术中应用最广泛的部分,J2EE提供了企 ...
- linux kernel 的配置及编译
1. 执行make menuconfig 配置内核 2. 执行make zImage 编译内核 3. 执行make modules 编译模块 4. 内核源代码的配置及编译系统 Makefile Kco ...
- 参考 - spring boot 静态变量注入值
参考http://blog.csdn.net/zhayuyao/article/details/78553417 @Component public class A { private static ...
- php71 gdnz
更新yum库:yum updat yum install epel-release yum install -y gcc gcc-c++ autoconf libjpeg libjpeg-devel ...
- 第八章 高级搜索树 (b2)B-树:结构
- joinablequeue模块 生产者消费者模型 Manager模块 进程池 管道
一.生产者消费者 主要是为解耦(借助队列来实现生产者消费者模型) import queue # 不能进行多进程之间的数据传输 (1)from multiprocessing import Queue ...