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,每次可以交换两个相邻的元素,执行最小次数的交换移动 ...
随机推荐
- 吴裕雄--天生自然 JAVASCRIPT开发学习:字符串
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- SASS - 操作符
SASS – 简介 SASS – 环境搭建 SASS – 使用Sass程序 SASS – 语法 SASS – 变量 SASS- 局部文件(Partial) SASS – 混合(Mixin) SASS ...
- 尝试用kotlin做一个app(写在前面)
学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...
- 中后缀表达式/洛谷P1175 表达式的转换
P1175 表达式的转换 思路:先用栈转成中缀表达式,再用栈进行计算.要输出过程,因此计算一次输出一次,但是栈没有迭代器,不好用,换成vector(可以pop_back).虽然表达式求值也可以这么做, ...
- Java length、length()、size()区别
1.length: 是一个 属性 针对的是 数组 得到的结果是 数组的长度 eg: String [] array = {"abc","def","g ...
- HDU 5428:The Factor
The Factor Accepts: 101 Submissions: 811 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65 ...
- Win10下 Java环境变量配置
安装java的JDK 下载地址 此电脑->属性->高级设置 "系统变量"新建 变量名:Java_Home 变量值:D:\Program Files\Java ...
- 在java中如何根据手机号查询号码归属地
1.maven项目中配置 <dependency><groupId>com.googlecode.libphonenumber</groupId><artif ...
- 201612-2 工资计算 Java
思路: 税+税后所得A=税前工资S. 因为工资是整百的数,每次减100来判断.好理解但是超时. import java.util.Scanner; //只有90分,超时了 public class M ...
- 排序算法 python实现
一.排序的基本概念和分类 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作.排序算法,就是如何使得记录按照要求排列的方法. 排序的稳定性: 经过某种排序后,如果两 ...