题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列。

n<=200000

思路:顺序来只能用splay维护

考虑倒序,对于插入到第K个位置,在线段树二分第K个0的位置,类似于主席树

将其插入后将这个位置修改为已经有数

单点修改

 var t:array[..]of longint;
a,b,c:array[..]of longint;
n,i,k:longint; procedure pushup(p:longint);
begin
t[p]:=t[p<<]+t[p<<+];
end; function query(l,r,k,p:longint):longint;
var mid:longint;
begin
if l=r then exit(l);
mid:=(l+r)>>;
if t[p<<]>=k then exit(query(l,mid,k,p<<))
else exit(query(mid+,r,k-t[p<<],p<<+));
pushup(p);
end; procedure update(l,r,k,p:longint);
var mid:longint;
begin
if (l=k)and(r=k) then
begin
dec(t[p]); exit;
end;
mid:=(l+r)>>;
if k<=mid then update(l,mid,k,p<<)
else update(mid+,r,k,p<<+);
pushup(p);
end; procedure build(l,r,p:longint);
var mid:longint;
begin
if l=r then
begin
t[p]:=; exit;
end;
mid:=(l+r)>>;
build(l,mid,p<<);
build(mid+,r,p<<+);
pushup(p);
end; begin
assign(input,'poj2828.in'); reset(input);
assign(output,'poj2828.out'); rewrite(output);
while not eof do
begin
readln(n);
if n= then break;
for i:= to n<< do t[i]:=;
fillchar(c,sizeof(c),);
for i:= to n do
begin
read(a[i],b[i]);
inc(a[i]);
end;
build(,n,);
for i:=n downto do
begin
k:=query(,n,a[i],);
c[k]:=b[i];
update(,n,k,);
end;
for i:= to n- do write(c[i],' ');
write(c[n]);
writeln;
end; close(input);
close(output);
end.

【POJ2828】Buy Tickets(线段树)的更多相关文章

  1. [poj2828] Buy Tickets (线段树)

    线段树 Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must ...

  2. poj-----(2828)Buy Tickets(线段树单点更新)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 12930   Accepted: 6412 Desc ...

  3. poj2828 Buy Tickets (线段树 插队问题)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 22097   Accepted: 10834 Des ...

  4. [POJ2828]Buy Tickets(线段树,单点更新,二分,逆序)

    题目链接:http://poj.org/problem?id=2828 由于最后一个人的位置一定是不会变的,所以我们倒着做,先插入最后一个人. 我们每次处理的时候,由于已经知道了这个人的位置k,这个位 ...

  5. 【poj2828】Buy Tickets 线段树 插队问题

    [poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...

  6. poj 2828 Buy Tickets (线段树(排队插入后输出序列))

    http://poj.org/problem?id=2828 Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissio ...

  7. POJ 2828 Buy Tickets 线段树 倒序插入 节点空位预留(思路巧妙)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 19725   Accepted: 9756 Desc ...

  8. Buy Tickets(线段树)

    Buy Tickets Time Limit: 4000MS   Memory Limit: 65536K Total Submissions: 16607   Accepted: 8275 Desc ...

  9. POJ 2828 Buy Tickets(线段树单点)

    https://vjudge.net/problem/POJ-2828 题目意思:有n个数,进行n次操作,每次操作有两个数pos, ans.pos的意思是把ans放到第pos 位置的后面,pos后面的 ...

  10. POJ 2828 Buy Tickets (线段树 or 树状数组+二分)

    题目链接:http://poj.org/problem?id=2828 题意就是给你n个人,然后每个人按顺序插队,问你最终的顺序是怎么样的. 反过来做就很容易了,从最后一个人开始推,最后一个人位置很容 ...

随机推荐

  1. yum命令——安装、卸载、查询等

    --常用命令 1.安装软件 yum install 软件名称 2.卸载软件 yum remove 软件名称 3.更新软件 yum update 软件名称 4.列出所有可安装的软件包 yum list ...

  2. 大规模IP地址黑名单高性能查询实现

    嗯……前阵子接了个活儿,需要做一个基于IP地址黑名单的分流网关.刚接到的时候心想iptables不就行了么,没想到一看客户给的IP黑名单规模……我擦……上亿个…… 黑名单到了这个规模,就不得不考虑下优 ...

  3. 关于Oracle出现listener refused the connection with the ORA-12505错误,解决方案

    出现listener refused the connection with the ORA-12505错误,解决方案: 1.首先重启一下电脑,释放被占用的1521端口 2.重启后打开Oracle D ...

  4. SSH in Python

    需要安装paramiko,paramiko需要PyCrypto , PyCrypto 需要GCC编译. 安装PyCrypto: 安装Mingw32,确认环境变量. 下载并编译PyCrypto - se ...

  5. jsp Request获取url信息的各种方法比较

    从Request对象中可以获取各种路径信息,以下例子: 假设请求的页面是index.jsp,项目是WebDemo,则在index.jsp中获取有关request对象的各种路径信息如下 String p ...

  6. linux中的进程和线程

    应用程序:可以被操作系统执行的一组指令和参数的集合,是静态的,并存储在磁盘空间中: 进程:在操作系统中在运行程序后,处于运行状态的程序,是应用程序的一个执行过程,同时也是操作系统分配内存,cpu等系统 ...

  7. 二模15day1解题报告

    T1.合并序列(minval) 给出长为 n的AB两个序列求两两相加中最小的n个. 据说有证明(在蓝书上,优先队列部分)先把A[1~n]+b[1]入队,然后每取一个a[x]+b[y]就把a[x]+b[ ...

  8. JSON.parse

    摘自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse The J ...

  9. CPU阿甘:函数调用的秘密

    个人感言:真正的知识是深入浅出的,码农翻身" 公共号将苦涩难懂的计算机知识,用形象有趣的生活中实例呈现给我们,让我们更好地理解.感谢"码农翻身" 公共号,感谢你们的成果, ...

  10. 常见寻找OEP脱壳的方法

    方法一: 1.用OD载入,不分析代码! 2.单步向下跟踪F8,是向下跳的让它实现 3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——运行到所选) 4.绿色线条表 ...