poj2828
很容易想到一种动态的做法:平衡树……
或者是二分+树状数组
但,前者编程复杂度较大,而且据说会被卡(没试过);后者理论上超时(据说可以擦边过?);
所以要尝试新的算法;
倒着考虑,显然最后一个对象的位置是最容易确定,顺带着,容易发现,
在第i个人后插入,就是在当前队列中前面有i个空位的空位置;
于是还是可以用平衡数……
当然更简单快捷的方法是线段树,每个节点表示这个区间还有的空位数;
然后类比平衡树的查找k大,很快就能写成
var tree:array[..] of longint;
p,a,w:array[..] of longint;
n,i:longint; procedure build(i,l,r:longint);
var m:longint;
begin
tree[i]:=r-l+;
m:=(l+r) shr ;
if l<>r then
begin
build(i*,l,m);
build(i*+,m+,r);
end;
end; function ask(i,l,r,k:longint):longint;
var m:longint;
begin
if l=r then
begin
tree[i]:=;
exit(l);
end;
m:=(l+r) shr ;
if tree[i*]>k then
begin
dec(tree[i*]); //在查找的过程中顺便把区间空位数更新
exit(ask(i*,l,m,k));
end
else begin
dec(tree[i*+]);
exit(ask(i*+,m+,r,k-tree[i*])); //有没有觉得很平衡树找区间k值神似
end;
end; begin
while not eoln do
begin
readln(n);
fillchar(tree,sizeof(tree),);
build(,,n);
for i:= to n do
readln(p[i],a[i]);
for i:=n downto do
w[i]:=ask(,,n,p[i]); //w代表每个点的位置
for i:= to n do
p[w[i]]:=a[i];
for i:= to n do
begin
write(p[i]);
if i<>n then write(' '); //注意别PE了
end;
writeln;
end;
end.
poj2828的更多相关文章
- 【POJ2828】Buy Tickets(线段树)
题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列. n<=200000 思路:顺序来只能用splay维护 考虑倒序,对于插入到第K个位置,在线 ...
- 【poj2828】Buy Tickets 线段树 插队问题
[poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...
- poj2828 Buy ticket
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
- poj2828 BuyTickets 线段树
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 17326 Accepted: 8601 Desc ...
- poj2828(线段树查找序列第k小的值)
题目链接:https://vjudge.net/problem/POJ-2828 题意:有n个人,依次给出这n个人进入队列时前面有多少人p[i],和它的权值v[i],求最终队列的权值序列. 思路:基本 ...
- 【poj2182】【poj2828】树状数组/线段树经典模型:逆序查找-空位插入法
poj2182题意:有一个1~n的排列,现在给定每个人前面有多少个人的编号比他大,求这个排列是什么.n<=8000 poj2182题解: 逆序做,可以确定二分最后一个是什么,然后删除这个数.树状 ...
- POJ-2828 Buy Tickets---线段树+逆序
题目链接: https://cn.vjudge.net/problem/POJ-2828 题目大意: 插队的问题,每个案例给出n,代表有n个插队的,每个给出p,v,意思是代号为v的人插在了第p个人的后 ...
- [POJ2828] Buy Tickets(待续)
[POJ2828] Buy Tickets(待续) 题目大意:多组测试,每组给出\(n\)条信息\((a,b)\),表示\(b\)前面有\(a\)个人,顺序靠后的信息优先级高 Solution.1 由 ...
- POJ2828 Buy Tickets[树状数组第k小值 倒序]
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 19012 Accepted: 9442 Desc ...
- 【poj2828】Buy Tickets
Description Railway tickets were difficult to buy around the Lunar New Year in China, so we must get ...
随机推荐
- php代码加密|PHP源码加密——实现方法
Encipher - PHP代码加密 | PHP源码加密下载地址:https://github.com/uniqid/encipher 该加密程序是用PHP代码写的,加密后代码无需任何附加扩展,无需安 ...
- WordPress 后台禁用Google Open Sans字体,加速网站
解决方法很简单,安装启用 Disable Google Fonts 或者 Remove Open Sans font Link from WP core 其中之一即可.或者如果你没有使用WP自带的官方 ...
- NativeExcel 读取文件
class function T_EShopDataBill.ImportData(const AFileName: String; AList: T_EShopDataModelList; var ...
- Spark机器学习 Day1 机器学习概述
Spark机器学习 Day1 机器学习概述 今天主要讨论个问题:Spark机器学习的本质是什么,其内部构成到底是什么. 简单来说,机器学习是数据+算法. 数据 在Spark中做机器学习,肯定有数据来源 ...
- 普通用户开启AUTOTRACE 功能
AUTOTRACE是一个SQL*Plus工具,用于跟踪SQL的执行计划,收集执行时所耗用资源的统计信息.系统账户本身具有AUTOTRACE,其他账户需要通过手动赋予 一. 用系统账户登录(DBA) S ...
- Pox启动及事件产生、监听分析
./pox/pox.py , Pox 实例化core=pox.core.initialize(),即为实例化POXCore类(该类是所有组件的交接点,提供组件注册功能),监听cor ...
- python3 pyqt5 和eric5配置教程
一.大纲内容: 1.预备PC环境: 2.预备安装程序: 2.1.下载Python3.2 2.2.下载PyQt4 2.3.下载Eric5 3.安装配置步骤: 3.1.安装Pyhon3.2 3.2.安装P ...
- EXPLAIN句法 优化表结构
EXPLAIN tbl_name or EXPLAIN SELECT select_options EXPLAIN tbl_name是DESC[RIBE] tbl_name或SHOW COLUMNS ...
- SVN弱密码扫描(Python)
寂寞如雪的用脑过度,所以来写个博客分享一下.#虽然上一篇博客我还没写完 SVN的弱密码,看起来很复杂,但实际上很简单啊= =虽然不像pymssql/mymssql这种,Python提供了很好用的包,但 ...
- 企业应用的Web程序的安全性
提起安全性这个话题,大家恐怕依稀还记得Sony的PSP账户信息泄露的事故造成的重大损失.但是又隐隐觉得这事儿离我很远,无需过多考虑.也有的人会想,我们做的是企业内部系统所以不必太在意.但是,Web程序 ...