【BZOJ】【3524】【POI2014】Couriers
2024-10-13 04:36:28
可持久化线段树
裸可持久化线段树,把区间第K大的rank改成num即可……(往儿子走的时候不减少)
苦逼的我……MLE了一次(N*30),RE了一次(N*10)……数组大小不会开……
最后开成N*20的过了
/**************************************************************
Problem: 3524
User: Tunix
Language: C++
Result: Accepted
Time:5752 ms
Memory:120416 kb
****************************************************************/ //BZOJ 3524
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
using namespace std; int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>'') {if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<='') {v=v*+ch-''; ch=getchar();}
return v*=sign;
}
/*******************tamplate********************/
const int N=;
struct Tree{
int cnt,l,r;
}t[N*];
int root[N],n,m,cnt;
#define mid (l+r>>1)
void update(int &o,int l,int r,int pos){
t[++cnt]=t[o]; o=cnt; ++t[o].cnt;
if (l==r) return;
if (pos<=mid) update(t[o].l,l,mid,pos);
else update(t[o].r,mid+,r,pos);
}
int query(int i,int j,int num){
i=root[i],j=root[j];
int l=,r=n;
while(l!=r){
if (t[t[j].l].cnt-t[t[i].l].cnt>num)
r=mid,j=t[j].l,i=t[i].l;
else if (t[t[j].r].cnt-t[t[i].r].cnt>num)
l=mid+,j=t[j].r,i=t[i].r;
else return ;
}
return l;
}
#undef mid
int main(){
n=getint(),m=getint();
F(i,,n){
root[i]=root[i-];
update(root[i],,n,getint());
} F(i,,m){
int l=getint(),r=getint();
printf("%d\n",query(l-,r,(r-l+)>>));
}
return ;
}
最新文章
- Starling中通过PivotX 和 PivotY 修改原点
- learn mips
- C# WPF获取任务栏时间区域的Rectangle
- PoolMon 使用
- [Elixir007] on_definition规范函数定义时的各种潜规则
- 获取datagrid中编辑列combobox的value值与text值
- (转)Asp.NetURL重写的一种方法
- Oracle 生成一张测试表并插入随机数据
- vmware中centos6.7系统图形化安装Oracle显示乱码问题解决
- .NET Core微服务实施之Consul服务发现与治理
- MFCWinInet学习
- [转] Javascript模块化编程(一):模块的写法
- C++程序设计方法3:移动构造函数
- 【LGR-049】洛谷7月月赛
- 【Linux 进程】fork函数详解
- UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)
- C#-求int数组中连续偶数列的个数
- 重写JdbcRDD支持Sql命名参数和分区
- HTTP Error 502.5 - Process Failure asp.net core error in IIS
- JavaScript Event Loop和微任务、宏任务