可持久化线段树

  裸可持久化线段树,把区间第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 ;
}

最新文章

  1. Starling中通过PivotX 和 PivotY 修改原点
  2. learn mips
  3. C# WPF获取任务栏时间区域的Rectangle
  4. PoolMon 使用
  5. [Elixir007] on_definition规范函数定义时的各种潜规则
  6. 获取datagrid中编辑列combobox的value值与text值
  7. (转)Asp.NetURL重写的一种方法
  8. Oracle 生成一张测试表并插入随机数据
  9. vmware中centos6.7系统图形化安装Oracle显示乱码问题解决
  10. .NET Core微服务实施之Consul服务发现与治理
  11. MFCWinInet学习
  12. [转] Javascript模块化编程(一):模块的写法
  13. C++程序设计方法3:移动构造函数
  14. 【LGR-049】洛谷7月月赛
  15. 【Linux 进程】fork函数详解
  16. UVa 1572 Self-Assembly (构造+拓扑排序。。。。。)
  17. C#-求int数组中连续偶数列的个数
  18. 重写JdbcRDD支持Sql命名参数和分区
  19. HTTP Error 502.5 - Process Failure asp.net core error in IIS
  20. JavaScript Event Loop和微任务、宏任务

热门文章

  1. 《Cocos2d-x实战 Lua卷》上线了
  2. iOS-图片拉伸,最常用的图片拉伸操作总结(干货)
  3. 服务器无法播放flv格式的视频解决办法
  4. js动态添加事件
  5. 10款基于jquery的web前端特效及源码下载
  6. Android 官网提供的Custom-view 编译出错--error: No resource identifier found for attribute
  7. mina socket底层主流程源码实现
  8. JavaScript移除数组元素减少长度的方法
  9. EventHandler委托的使用
  10. openerp学习笔记 webkit 打印