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. ...
随机推荐
- springboot-i18n国际化
简介 In computing, internationalization and localization are means of adapting computer software to di ...
- Spring持久化之MyBatis
MyBatis是一个优秀的轻量级持久化框架,本文主要介绍MyBatis与Spring集成的配置与用法. 1. Spring MyBatis配置 1.1 添加Maven依赖 在pom.xml文件里添加m ...
- CS193p Lecture 4 - Foundation, Attributed Strings
消息机制 调用一个实例(instance)的方法(method),就是向该实例的指针发送消息(message),实例收到消息后,从自身的实现(implementation)中寻找响应这条消息的方法. ...
- Greenplum介绍-table
GP中的table和其它关系型数据表是一样的,除了数据被分布在不同的segment以外. 建表时需定义以下几个方面:1. 指定列和数据类型2. 约束3. 分布策略4. 数据存储方式5. 大表分区策略 ...
- java面试宝典第二弹
arraylist和linklist的区别,hashmap和hashset的区别,常用的集合有哪些 一.基础内容 容器就是一种装其他各种对象的器皿.java.util包 容器:Set, List, M ...
- Sql语句的一些事(一)
(1)LIMIT子句(MySql) ----LIMIT 子句用于规定要返回的记录的数目,一般和Order By一起使用 经常用于数据的分页查询,但是一旦数据量一大,limit的性能就会急速下降 格式: ...
- centos下nginx安装和配置
注:此文是根据前辈的博客和自己实际动手总结出来的,不喜勿喷 1.准备工作 Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,注意安装顺序如下: 1 SSL功能需要 ...
- react 组件架构
容器型组件(container component) 含有抽象数据而没有业务逻辑的组件 负责管理数据和业务逻辑,不负责 UI 的呈现 带有内部状态 展示型组件(presentational compo ...
- Kafka创建&查看topic,生产&消费指定topic消息
启动zookeeper和Kafka之后,进入kafka目录(安装/启动kafka参考前面一章:https://www.cnblogs.com/cici20166/p/9425613.html) 1.创 ...
- day14 迭代器,生成器,函数的递归调用
1.什么是迭代器 迭代是一个重复的过程,但是每次重复都是基于上一次重复的结果而继续 迭代取值的工具 2.为什么要用迭代器 迭代器的优点 ①不依赖于索引取值 ②更节省内存 缺点: 1.不如按 ...