概述
做完这道题才意识到什么是线段树的巧妙运用。
yy才是王道啊!
关键词:倒叙插入。
#include <stdio.h>
#define maxn 200050
#define lson l , m , rt * 2
#define rson m+1 , r , rt * 2 + 1
int n;
int rest[maxn*4],ans[maxn];
int id[maxn],value[maxn];
void PushUp(int rt)
{
rest[rt] = rest[rt*2] + rest[rt*2+1];
}
void build(int l,int r,int rt)
{
if(l == r){
rest[rt] = 1;
return ;
}
int m = (l + r) / 2;
build(lson);
build(rson);
PushUp(rt);
}
void update(int index,int cur,int l,int r,int rt)
{
if(l == r)
{
rest[rt] = 0;
ans[l] = cur;
return ;
}
int m = (l + r) / 2;
if(index <= rest[rt*2])
update(index,cur,lson);
else
update(index-rest[rt*2],cur,rson);
PushUp(rt);
}
int main()
{
int i;
while(scanf("%d",&n)==1)
{
build(1,n,1);
for(i=1;i<=n;i++)
scanf("%d%d",&id[i],&value[i]);
for(i=n;i>=1;i--)
{
update(id[i]+1,value[i],1,n,1);
}
printf("%d",ans[1]);
for(i=2;i<=n;i++)
printf(" %d",ans[i]);
printf("n");
}
}
最后
以上就是现代蜗牛为你收集整理的poj Buy Tickets (巧妙的线段树)的全部内容,希望文章能够帮你解决poj Buy Tickets (巧妙的线段树)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复