Codeforces 1262D Optimal Subsequences(BIT+二分)
首先比较容易想到肯定是前k大的元素,那么我们可以先对其进行sort,如果数值一样返回下标小的(见题意),接下里处理的时候我们发现需要将一个元素下标插入到有序序列并且需要访问第几个元素是什么,那么我们可以离线处理,将所有询问存起来,每次插入一个元素的时候在对其进行查询,那么现在就变成了离线求第k大,那么可以直接上主席数,当然比较懒的做法就直接树状数组维护下标,二分查找答案。
// ——By DD_BOND #include<bits/stdc++.h> #define fi first
#define se second
#define pb push_back
#define lowbit(a) (a&(-a)) using namespace std; typedef long long ll;
typedef pair<int,int> P; const int MAXN=1e6+; P a[MAXN];
vector<P>q[MAXN];
int b[MAXN],bit[MAXN],ans[MAXN]; bool cmp(P x,P y){
if(x.fi==y.fi) return x.se<y.se;
return x.fi>y.fi;
} void add(int p,int n){
for(int i=p;i<=n;i+=lowbit(i)) bit[i]++;
} int query(int p){
int sum=;
for(int i=p;i>=;i-=lowbit(i)) sum+=bit[i];
return sum;
} int main(void)
{
ios::sync_with_stdio(false); cin.tie(); cout.tie();
int n; cin>>n;
for(int i=;i<=n;i++) cin>>a[i].fi,a[i].se=i,b[i]=a[i].fi;
int m; cin>>m;
for(int i=;i<=m;i++){
int k,p; cin>>k>>p;
q[k].pb(P(p,i));
}
sort(a+,a+n+,cmp);
for(int i=;i<=n;i++){
add(a[i].se,n);
for(int j=;j<(int)q[i].size();j++){
P p=q[i][j];
int l=,r=n,res=;
while(l<=r){
int mid=(l+r)>>;
if(query(mid)>=p.fi) res=mid,r=mid-;
else l=mid+;
}
ans[p.se]=res;
}
}
for(int i=;i<=m;i++) cout<<b[ans[i]]<<endl;
return ;
}
Codeforces 1262D Optimal Subsequences(BIT+二分)的更多相关文章
- codeforces 1262D Optimal Subsequences 主席树询问第k小
题意 给定长度为\(n\)的序列\(a\),以及m个询问\(<k,pos>\),每次询问满足下列条件的子序列中第\(pos\)位的值为多少. 子序列长度为\(k\) 序列和是所有长度为\( ...
- Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) D2. Optimal Subsequences (Hard Version) 数据结构 贪心
D2. Optimal Subsequences (Hard Version) This is the harder version of the problem. In this version, ...
- CF-Technocup3 D Optimal Subsequences
D Optimal Subsequences http://codeforces.com/contest/1227/problem/D2 显然,每次求的k一定是这个序列从大到小排序后前k大的元素. 考 ...
- POJ 2112 Optimal Milking (二分+最短路径+网络流)
POJ 2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit: 2000MS Memory Limit: 30000K To ...
- [Codeforces 1214A]Optimal Currency Exchange(贪心)
[Codeforces 1214A]Optimal Currency Exchange(贪心) 题面 题面较长,略 分析 这个A题稍微有点思维难度,比赛的时候被孙了一下 贪心的思路是,我们换面值越小的 ...
- codeforces 689D D. Friends and Subsequences(RMQ+二分)
题目链接: D. Friends and Subsequences time limit per test 2 seconds memory limit per test 512 megabytes ...
- Codeforces Round #602 (Div. 2, based on Technocup 2020 Elimination Round 3) - D2. Optimal Subsequences (Hard Version)(主席树)
题意:一共有$n$个数,$m$次询问,每次询问包括$k.pos$两个数,需要你从这$n$个数里面找出$k$个数,使得他们的总和最大,如果有多种情况,找出序号字典序最小的一组,然后输出这个序列中第$po ...
- Codeforces Round #602 Div2 D1. Optimal Subsequences (Easy Version)
题意:给你一个数组a,询问m次,每次返回长度为k的和最大的子序列(要求字典序最小)的pos位置上的数字. 题解:和最大的子序列很简单,排个序就行,但是题目要求字典序最小,那我们在刚开始的时候先记录每个 ...
- CodeForces 377B---Preparing for the Contest(二分+贪心)
C - Preparing for the Contest Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d ...
随机推荐
- ubuntu中查看AMD GPU 状态的办法
lshw -c video 运行命令:glxinfo | grep rendering 如果结果是“yes”,证明显卡驱动已经成功安装. 如果提示有问题,可能是系统里面没有安装mesa-utils,安 ...
- Shell-06 函数
Shell-06 函数 #编写脚本,使用chkconfig命令,循环执行,关闭所有5级别服务 #!/bin/bash name=`chkconfig --list | cut -d' ' -f1` f ...
- QT 问题提问网站
https://stackoverflow.com/questions/tagged/qt
- JPA学习(二、JPA_基本注解)
框架学习之JPA(二) JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中 ...
- cpp 面向对象初步探索
需求 尝试定义一个complex(复数类) 简略实现 headers/complex.h #ifndef __COMPLEX__ #define __COMPLEX__ class complex { ...
- Bug管理工具MantisBT-2.18.0安装教程
Bug管理工具MantisBT安装教程 MantisBT官网下载地址:https://sourceforge.net/projects/mantisbt/# 写于:2018.12.1 如上传博客资料图 ...
- 修改apache2配置,禁止目录访问+禁止访问.git文件夹
通过url访问服务器,无论是本地服务器还是远程服务器 如果你的文件根目录里有 index.html,index.php,浏览器就会显示 index.html的内容,如果没有 index.html,浏览 ...
- Vuex入门(转)
参考:https://segmentfault.com/a/1190000015782272 https://www.cnblogs.com/y896926473/p/6709733.html 如果你 ...
- 2-sat问题简记
关于2-sat问题,这里笔者主要是做一些简记,如要详细了解,可以读一读此dalao的文章:https://blog.csdn.net/jarjingx/article/details/8521690 ...
- (转)js中then方法说明
javascript中的then方法说明: then()方法是异步执行. 意思是:就是当.then()前的方法执行完后再执行then()内部的程序,这样就避免了,数据没获取到等的问题. 语法:pr ...