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 ...
随机推荐
- python 字符词串和字符串的转换
type(' i am ') str type(''.join('i am')) str ''.join('sda sadaa') 'sda sadaa' q=str('i am the teache ...
- form表单细节
一.表单 表单<form> 标签用于为用户输入创建 HTML 表单 表单能够包含 input 元素,比如文本字段.复选框.单选框.提交按钮等等. 表单还可以包含 menus.textare ...
- Spring Boot教程(二十四)Web应用的统一异常处理
我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况.Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来 ...
- Spring Cloud云架构 - SSO单点登录之OAuth2.0 登出流程(3)
上一篇我根据框架中OAuth2.0的使用总结,画了一个根据用户名+密码实现OAuth2.0的登录认证的流程图,今天我们看一下logout的流程: /** * 用户注销 * @param accessT ...
- 管理es索引-使用 Xput创建索引
curl是利用URL语法在命令行方式下工作的开源文件传输工具,使用curl可以简单实现常见的get/post请求.简单的认为是可以在命令行下面访问url的一个工具.在centos的默认库里面是有cur ...
- Getting CFNetwork SSLHandshake failed (-9806) error
平常个人打测试包一切OK,今天突然不能联网了 How to handle "CFNetwork SSLHandshake failed" in iOS 参考1 Getting CF ...
- [论文理解] Squeeze-and-Excitation Networks
Squeeze-and-Excitation Networks 简介 SENet提出了一种更好的特征表示结构,通过支路结构学习作用到input上更好的表示feature.结构上是使用一个支路去学习如何 ...
- git跟yum一样 linux下的命令使用和思想是类似的
git跟yum一样 linux下的命令使用和思想是类似的
- leetcode 102.Binary Tree Level Order Traversal 二叉树的层次遍历
基础为用队列实现二叉树的层序遍历,本题变体是分别存储某一层的元素,那么只要知道,每一层的元素都是上一层的子元素,那么只要在while循环里面加个for循环,将当前队列的值(即本层元素)全部访问后再执行 ...
- SpEL 实例
SpEl 实例 基于 Spring 解析 @RestController @RequestMapping("/spel") @Slf4j public class SpELCont ...