K-th Number(poj 2104)
题意:静态第K大
#include<cstdio>
#include<iostream>
#include<cstring>
#define N 200010
#define inf 1000000000
using namespace std;
int n,m,num,tmp[N],ans[N],sum[N];
struct node{
int x,y,k,s,tp,cur;
};node a[N],q1[N],q2[N];
void modify(int x,int v){
while(x<=n){
sum[x]+=v;
x+=x&(-x);
}
}
int query(int x){
int tot=;
while(x){
tot+=sum[x];
x-=x&(-x);
}
return tot;
}
void solve(int head,int tail,int l,int r){
if(head>tail)return;
if(l==r){
for(int i=head;i<=tail;i++)
if(a[i].tp==)ans[a[i].s]=l;
return;
}
int mid=l+r>>;
for(int i=head;i<=tail;i++){
if(a[i].tp==&&a[i].y<=mid) modify(a[i].x,);
if(a[i].tp==) tmp[i]=query(a[i].y)-query(a[i].x-);
}
for(int i=head;i<=tail;i++)
if(a[i].tp==&&a[i].y<=mid) modify(a[i].x,-);
int l1=,l2=;
for(int i=head;i<=tail;i++){
if(a[i].tp==){
if(a[i].cur+tmp[i]>=a[i].k) q1[++l1]=a[i];
else a[i].cur+=tmp[i],q2[++l2]=a[i];
}
else {
if(a[i].y<=mid) q1[++l1]=a[i];
else q2[++l2]=a[i];
}
}
for(int i=;i<=l1;i++)a[head+i-]=q1[i];
for(int i=;i<=l2;i++)a[head+l1+i-]=q2[i];
solve(head,head+l1-,l,mid);
solve(head+l1,tail,mid+,r);
}
void work(){
for(int i=;i<=n;i++){
int x;scanf("%d",&x);
a[++num].x=i;a[num].y=x;a[num].s=;a[num].tp=;
}
for(int i=;i<=m;i++){
int x,y,k;scanf("%d%d%d",&x,&y,&k);
a[++num].x=x;a[num].y=y;a[num].k=k;a[num].s=i;a[num].tp=;
}
solve(,num,-inf,inf);
for(int i=;i<=m;i++)
printf("%d\n",ans[i]);
}
int main(){
while(scanf("%d%d",&n,&m)!=EOF){
memset(tmp,,sizeof(tmp));
memset(sum,,sizeof(sum));
memset(ans,,sizeof(ans));
memset(a,,sizeof(a));
num=;
work();
}
return ;
}
K-th Number(poj 2104)的更多相关文章
- 1019 General Palindromic Number (20 分)
1019 General Palindromic Number (20 分) A number that will be the same when it is written forwards or ...
- hihoCoder 1432 : JiLi Number(吉利数)
hihoCoder #1432 : JiLi Number(吉利数) 时间限制:1000ms 单点时限:1000ms 内存限制:256MB Description - 题目描述 Driver Ji l ...
- 分类算法——k最近邻算法(Python实现)(文末附工程源代码)
kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...
- 【BZOJ3110】K大数查询(整体二分)
[BZOJ3110]K大数查询(整体二分) 题面 BZOJ 题解 看了很久整体二分 一直不知道哪里写错了 ... 又把树状数组当成线段树区间加法来用了.. 整体二分还是要想清楚在干什么: 我们考虑第\ ...
- 【BZOJ3436】小K的农场(差分约束)
[BZOJ3436]小K的农场(差分约束) 题面 由于BZOJ巨慢无比,使用洛谷美滋滋 题解 傻逼差分约束题, 您要是不知道什么是差分约束 您就可以按下\(Ctrl+W\)了 #include< ...
- 1117 Eddington Number (25 分)
1117 Eddington Number (25 分) British astronomer Eddington liked to ride a bike. It is said that in o ...
- 1038 Recover the Smallest Number (30 分)
1038 Recover the Smallest Number (30 分) Given a collection of number segments, you are supposed to r ...
- [PAT] 1144 The Missing Number(20 分)
1144 The Missing Number(20 分) Given N integers, you are supposed to find the smallest positive integ ...
- 数据类型总结——Number(数值类型)
相关文章 简书原文:https://www.jianshu.com/p/9fb573ef10da 数据类型总结——概述:https://www.cnblogs.com/shcrk/p/9266015. ...
随机推荐
- GNU make(2)
GNU make(2) 参考: GNU Make学习总结(二) 变量 变量由一个前导符号$加上字符或者是括号字符组成, 名称区分大小写. 命名: 习惯上用全部大写字符表示常量, 小写字符表示变量, 单 ...
- HDU 4348 I - To the moon 可持续化
队友套的可持续化线段树,徘徊在RE和MLE之间多发过的... 复用结点新的线段树平均要log2N个结点. 其实离线就好,按照时间顺序组织操作然后dfs. #include <iostream&g ...
- HTML5资源汇总(更新游戏引擎cocos2d-html5)
我也是现学现用,想了解的可以看看效果,想知道实现的也有源码 http://cocos2d-html5.org Cocos2d-HTML5 API和Cocos2d-x一致,同样的代码可以支持cocos2 ...
- 第八篇:cx_Oracle出现的问题
1.cx_Oracle.DatabaseError: ORA-24315: illegal attribute type 2.cx_Oracle.InterfaceError: Unable to a ...
- 实验十一 团队作业7:团队项目设计完善&编码
实验十一 团队作业7:团队项目设计完善&编码 实验时间 2019-6-6 Deadline: 2019-6-12 10:00,以团队随笔博文提交至班级博客的时间为准. 评分标准: 按时交 – ...
- tomcat性能优化 - 网络抄录
tomcat默认参数是为开发环境制定,而非适合生产环境,尤其是内存和线程的配置,默认都很低,容易成为性能瓶颈. tomcat内存优化 linux修改TOMCAT_HOME/bin/catalina.s ...
- Protocol(协议)、Delegate(委托)、DataSource(数据源)
这里以 UITableViewController 和 UITableView 的关系为例: //--------------------------------------------------- ...
- EAGLView介绍
http://book.51cto.com/art/201108/285446.htm
- 高度自适应的bug
今天在整理之前IFEde作业,发现有个简历的效果好像没实现.于是想把样式改成作业要求的那样. 作业要求是这样的: 右边栏昨晚高度是839px,我想把左边栏做成高度自适应的.但是没成功.现在我把这个问题 ...
- linux uptime-查看Linux系统负载信息
更多linux 性能监测与优化 关注:linux命令大全 uptime命令能够打印系统总共运行了多长时间和系统的平均负载.uptime命令可以显示的信息显示依次为:现在时间.系统已经运行了多长时间.目 ...