首先如果L=1,那就可以直接用一个优先队列来做

但它并不是1 所以要换个做法

假设我们已经知道第L的数是x,第R的数是y

那其实就只需要找到[x+1,y+1]这一段,然后再加上一定数量的x和y就是答案

于是可以枚举A[i],二分B[j]找到

然后考虑怎么找第L的数是多少

其实也是二分出一个数,然后比较L和小于它的个数

这个小于它的个数怎么算呢,还是二分......

复杂度$O(nlog^2n)$

 #include<bits/stdc++.h>
#define pa pair<int,int>
#define CLR(a,x) memset(a,x,sizeof(a))
using namespace std;
typedef long long ll;
const int maxn=1e5+; inline ll rd(){
ll x=;char c=getchar();int neg=;
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} ll N,L,R,a[maxn],b[maxn],ans[maxn]; inline ll count(ll k){
ll re=;
for(int i=;i<=N;i++){
int l=,r=N,n=;
while(l<=r){
int m=l+r>>;
if(a[i]+b[m]<k) l=m+,n=m;
else r=m-;
}re+=n;
}return re;
} int main(){
ll i,j,k;
N=rd(),L=rd(),R=rd();
for(i=;i<=N;i++)
a[i]=rd();
for(i=;i<=N;i++)
b[i]=rd();
sort(a+,a+N+);sort(b+,b+N+);
ll l=a[]+b[],r=a[N]+b[N],nl,nr;
while(l<=r){
int m=l+r>>;
if(count(m)<L) l=m+,nl=m;
else r=m-;
}
l=a[]+b[],r=a[N]+b[N];
while(l<=r){
int m=l+r>>;
if(count(m)<R) l=m+,nr=m;
else r=m-;
}
k=;
for(i=;i<=N;i++){
int l=,r=N,x=N+,y=-;
while(l<=r){
int m=l+r>>;
if(a[i]+b[m]>nl) x=m,r=m-;
else l=m+;
}
l=,r=N;
while(l<=r){
int m=l+r>>;
if(a[i]+b[m]<nr) y=m,l=m+;
else r=m-;
}
for(j=x;j<=y;j++)
ans[++k]=a[i]+b[j];
}
sort(ans+,ans+k+);
for(i=L;i<=min(R,count(nl+));i++)
printf("%lld ",nl);
j=i-;
for(;i<=k+j;i++)
printf("%lld ",ans[i-j]);
for(;i<=R;i++)
printf("%lld ",nr);
return ;
}

noiac64 sort (二分答案)的更多相关文章

  1. HDU 5884 Sort(二分答案+计算WPL的技巧)

    Sort Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. HDU - 5884 Sort (二分答案+贪心)

    有n个数字,你需要把这n个数字合成一个数字,每次只能把k个数字合并成一个,花费为这k个数字的和. 给一个最大花费,问不超过这个最大花费的情况下,k的最小值. Sample Input 1 5 25 1 ...

  3. E. Santa Claus and Tangerines 二分答案 + 记忆化搜索

    http://codeforces.com/contest/752/problem/E 首先有一个东西就是,如果我要检测5,那么14我们认为它能产生2个5. 14 = 7 + 7.但是按照平均分的话, ...

  4. 字符串hash + 二分答案 - 求最长公共子串 --- poj 2774

    Long Long Message Problem's Link:http://poj.org/problem?id=2774 Mean: 求两个字符串的最长公共子串的长度. analyse: 前面在 ...

  5. HNOI2006-公路修建问题(二分答案+并查集)

    公路修建问题 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多.然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕.所以,OIER Association组织成立了,旨 ...

  6. POJ3294--Life Forms 后缀数组+二分答案 大于k个字符串的最长公共子串

                                                                              Life Forms Time Limit: 500 ...

  7. POJ 3579 Median(二分答案+Two pointers)

    [题目链接] http://poj.org/problem?id=3579 [题目大意] 给出一个数列,求两两差值绝对值的中位数. [题解] 因为如果直接计算中位数的话,数量过于庞大,难以有效计算, ...

  8. BZOJ 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛( 二分答案 )

    最小最大...又是经典的二分答案做法.. -------------------------------------------------------------------------- #inc ...

  9. BZOJ 1717: [Usaco2006 Dec]Milk Patterns 产奶的模式( 二分答案 + 后缀数组 )

    二分答案m, 后缀数组求出height数组后分组来判断. ------------------------------------------------------------ #include&l ...

随机推荐

  1. 微信开发 提示 Redirect_uri(错误10003)

    情景: 搭建完成一个网站,使用微信打开链接地址,结果报错1003 完整的错误信息: 出现这种情况一般有两种原因: 1.没有配置网页授权  我们可以根据微信的开发者文档http://mp.weixin. ...

  2. MyEclipse 配置 Tomcat

    安装好Tomcat,MyEclipse 之后,利用这两个工具可以开发部署Web 应用,步骤相对手动部署要简洁的多,这里有一个特别要注意的地方:系统里安装JDK.Tomcat.MyEclipse 的版本 ...

  3. :before添加图片,IE8兼容

    这是项目开发中遇到的奇怪的小问题: 在IE8下出现按钮点击后消失了,鼠标点击页面后却又出现: 最初的代码:添加背景图片的方法,这样是存在兼容问题的. 更改后代码:content中添加图片,完美兼容IE ...

  4. SQL之CASE WHEN用法详解[1]

    简单CASE WHEN函数: CASE SCORE WHEN 'A' THEN '优' ELSE '不及格' END CASE SCORE WHEN 'B' THEN '良' ELSE '不及格' E ...

  5. java 中的打印流

    package cn.zhou; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.F ...

  6. tomcat 和jboss区别

    参考http://blog.csdn.net/sz_bdqn/article/details/6762175

  7. MailUtils类:用于发送激活邮件

    该类用于发送激活邮件 package com.itheima.utils; import java.util.Properties; import javax.mail.Authenticator; ...

  8. C语言学习IDE和基本程序结构

    任何一门语言的学习,首先要有一个编辑器或集成开发工具IDE, 要不然代码都不知道写到什么地方.对于我这种小白来说,安装个IDE是最好不过的,因为C 语言也是编译语言,写完代码之后,要先编译才能运行,而 ...

  9. Ontology

    本体网络(Ontology) 新一代分布式信任链网 在开始了解项目之前,让我们先看一段“第一财经”频道关于“本体网络”的介绍: 项目介绍 1摘要 类型  提供不同分布式应用场景的开放基础模块,构建跨链 ...

  10. CF558E-A Simple Task-线段树+计数排序

    计数排序的原理,只要知道了有几个数比i小,就可以知道i的位置 这道题只有26个字母,搞26颗线段树,然后区间更新 #include <cstdio> #include <cstrin ...