F 乘法(第k大问题)(二分)
题:https://ac.nowcoder.com/acm/contest/3979/F
题意:俩个序列俩俩相乘得到n*m个数,求第k大的数是哪个
分析:二分
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define pb push_back
#define lson root<<1,l,midd
#define rson root<<1|1,midd+1,r
const int M=1e6+;
const ll inf=1e13;
ll a[M],b[M];
int n,m;
ll k;
ll check(ll x){
ll countt=;
for(int i=;i<=n;i++){///在b数组里找哪些数乘当前a[i]会大于等于x,记录这个数有几个
ll y;
if(a[i]<){
if(x<=)
y=x/a[i];
else
y=floor((double)x/(double)a[i]);
countt+=upper_bound(b+,b++m,y)-b-;///要把等于的算进去
}
else if(a[i]==&&x<=)
countt+=m;
else if(a[i]>){
if(x<=)
y=x/a[i];
else
y=ceil((double)x/(double)a[i]);
countt+=m-(lower_bound(b+,b++m,y)-b-);
}
}
return countt;
}
int main(){ scanf("%d%d%lld",&n,&m,&k);
for(int i=;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=;i<=m;i++)
scanf("%lld",&b[i]); sort(b+,b++m);
ll l=-inf,r=inf;
while(l<=r){
ll midd=(l+r)>>;
if(check(midd)<k)
r=midd-;
else
l=midd+;
}
printf("%lld\n",r);
return ;
}
F 乘法(第k大问题)(二分)的更多相关文章
- 整体二分初探 两类区间第K大问题 poj2104 & hdu5412
看到好多讲解都把整体二分和$CDQ$分治放到一起讲 不过自己目前还没学会$CDQ$分治 就单独谈谈整体二分好了 先推荐一下$XHR$的 <浅谈数据结构题的几个非经典解法> 整体二分在当中有 ...
- 【CodeForces】961 F. k-substrings 字符串哈希+二分
[题目]F. k-substrings [题意]给定长度为n的串S,对于S的每个k-子串$s_ks_{k+1}...s_{n-k+1},k\in[1,\left \lceil \frac{n}{2} ...
- 区间第k大问题 权值线段树 hdu 5249
先说下权值线段树的概念吧 权值平均树 就是指区间维护值为这个区间内点出现次数和的线段树 用这个加权线段树 解决第k大问题就很方便了 int query(int l,int r,int rt,int k ...
- [NBUT 1458 Teemo]区间第k大问题,划分树
裸的区间第k大问题,划分树搞起. #pragma comment(linker, "/STACK:10240000") #include <map> #include ...
- [笔记] $f(i)$ 为 $k$ 次多项式,$\sum_{i=0}^nf(i)\cdot q^i$ 的 $O(k\log k)$ 求法
\(f(i)\) 为 \(k\) 次多项式,\(\sum_{i=0}^nf(i)\cdot q^i\) 的 \(O(k\log k)\) 求法 令 \(S(n)=\sum_{i=0}^{n-1}f(i ...
- [ACM] POJ 3233 Matrix Power Series (求矩阵A+A^2+A^3...+A^k,二分求和或者矩阵转化)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 15417 Accepted: ...
- Gym - 100283F F. Bakkar In The Army —— 二分
题目链接:http://codeforces.com/gym/100283/problem/F F. Bakkar In The Army time limit per test 2 seconds ...
- F. Bakkar In The Army 二分
http://codeforces.com/gym/100283/problem/F 思路是二分第几行,二分出来的行是总和 >= n的,那么第k - 1行一定要选,那么再在第k行中二分那一列. ...
- codeforces 1269E K Integers (二分+树状数组)
链接:https://codeforces.com/contest/1269/problem/E 题意:给一个序列P1,P2,P3,P4....Pi,每次可以交换两个相邻的元素,执行最小次数的交换移动 ...
随机推荐
- Unity 可重复随机数
出处 https://blogs.unity3d.com/cn/2015/01/07/a-primer-on-repeatable-random-numbers/ (英文原版) http://ww ...
- [XNUCA2019Qualifier]EasyPHP
0x00 知识点 预期解中知识点: htaccess生效 如果尝试上传htaccess文件会发现出现响应500的问题,因为文件尾有Just one chance 这里采用# \的方式将换行符转义成普通 ...
- JAVA中汉字的Compare排序
当调用String.compare方法的时候,比较的是Unicode码,并不能对汉字进行准确的排序,所以汉字比较时会出现比较混乱的结果. java.text.Collator类中有一个getInsta ...
- markdown使用介绍
一.标题,前面加#,加一个 一级标题,两个二级标题,以此类推. 一级标题 二级标题 三级标题
- Linux误删所有内核,恢复内核的解决办法
前言 我用df -h命令查看磁盘使用情况的时候发现,系统根目录空间已经比较小了,于是我就使用clean命令对系统内核进行清理,一不小心,就把所有的内核删除了,你很有可能也是我的这种经历,非常的崩溃.好 ...
- Html 常见标签,css基础样式,css的浮动和清流,浏览器的兼容
1.html模板<!DOCTYPE html><html><head> <meta charset="UTF-8"> <tit ...
- HTML5 可缩放矢量图形(2)—SVG基础
参考文档——权威 SVG常识 渲染顺序——后来居上:越后面的元素越可见 单位——可以指定,也可以不指定,默认px,其他:em.%.cm.mm... SVG画布——绘制图像的区域,无限大 SVG视窗—— ...
- nodejs(15)express开启cors跨域
express开启cors跨域 package.json "dependencies": { "body-parser": "^1.18.3" ...
- ES系列之Promise async 和 await
概述 promise是异步编程的一种解决方案,比传统的解决方案—回调函数和事件—更合理更强大. 所谓的promise就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作的结果). Pro ...
- studentmanagement
package javatestywh; public class ScoreInformation { private String stunumber; private String name; ...