HDU-- Buy Tickets
告知每次要插到第 i 个位置上,问最后它们的顺序是什么。
这一题,不是考线段树,是考如何想出用线段树...思维很巧妙,倒过来做的话就能确定此人所在的位置....
线段树每个结点有一个remain域,记录些线段还有多少个空位....开始时,叶结点的remain当然为1
Buy Tickets
Time Limit : 8000/4000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other)
Total Submission(s) : 10 Accepted Submission(s) : 5
Railway tickets were difficult to buy around the Lunar New Year in China, so we must get up early and join a long queue…
The Lunar New Year was approaching, but unluckily the Little Cat still had schedules going here and there. Now, he had to travel by train to Mianyang, Sichuan Province for the winter camp selection of the national team of Olympiad in Informatics.
It was one o’clock a.m. and dark outside. Chill wind from the northwest did not scare off the people in the queue. The cold night gave the Little Cat a shiver. Why not find a problem to think about? That was none the less better than freezing to death!
People kept jumping the queue. Since it was too dark around, such moves would not be discovered even by the people adjacent to the queue-jumpers. “If every person in the queue is assigned an integral value and all the information about those who have jumped the queue and where they stand after queue-jumping is given, can I find out the final order of people in the queue?” Thought the Little Cat.
There will be several test cases in the input. Each test case consists of N + 1 lines where N (1 ≤ N ≤ 200,000) is given in the first line of the test case. The next N lines contain the pairs of values Posi and Vali in the increasing order of i (1 ≤ i ≤ N). For each i, the ranges and meanings of Posi and Vali are as follows:
- Posi ∈ [0, i − 1] — The i-th person came to the queue and stood right behind the Posi-th person in the queue. The booking office was considered the 0th person and the person at the front of the queue was considered the first person in the queue.
- Vali ∈ [0, 32767] — The i-th person was assigned the value Vali.
There no blank lines between test cases. Proceed to the end of input.
For each test cases, output a single line of space-separated integers which are the values of people in the order they stand in the queue.
- #include<stdio.h>
- #define maxn 500004
- int a[maxn];
- int b[maxn];
- int c[maxn];
- struct node
- {
- int left,right;
- int remain;
- };
- node tree[*maxn];
- void build(int left,int right,int i)
- {
- tree[i].left =left;
- tree[i].right =right;
- if(tree[i].left ==tree[i].right )
- {
- tree[i].remain=;
- return ;
- }
- build(left,(left+right)/,*i);
- build((left+right)/+,right,*i+);
- tree[i].remain=tree[*i].remain+tree[*i+].remain;
- }
- void insert(int p,int val,int k)
- {
- if(tree[k].left == tree[k].right)
- {
- tree[k].remain--;
- a[tree[k].left] = val;
- return ;
- }
- if(p <= tree[k<<].remain)
- insert(p,val,*k);
- else
- insert(p-tree[*k].remain,val,*k+); //右子树
- tree[k].remain = tree[*k].remain + tree[*k+].remain; //更新remain
- }
- int main()
- {
- int i,n;
- while(~scanf("%d",&n))
- {
- for(i=;i<=n;i++)
- scanf("%d%d",&b[i],&c[i]);
- build(,n-,);
- for(i=n;i>=;i--)
- {
- insert(b[i]+,c[i],);
- }
- printf("%d",a[]);
- for(i=;i<n;i++)
- printf(" %d",a[i]);
- printf("\n");
- }
- return ;
- }
HDU-- Buy Tickets的更多相关文章
- hdu 2828 Buy Tickets
Buy Tickets Time Limit : 8000/4000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...
- poj 2828 buy Tickets 用线段树模拟带插入的队列
Buy Tickets Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2 ...
- HDU 1260 Tickets (普通dp)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1260 Tickets Time Limit: 2000/1000 MS (Java/Others) ...
- 题解报告:hdu 1260 Tickets
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 Problem Description Jesus, what a great movie! T ...
- H - Buy Tickets POJ - 2828 逆序遍历 树状数组+二分
H - Buy Tickets POJ - 2828 这个题目还是比较简单的,其实有思路,不过中途又断了,最后写了一发别的想法的T了. 然后脑子就有点糊涂,不应该啊,这个题目应该会写才对,这个和之前的 ...
- POJ2828 Buy Tickets[树状数组第k小值 倒序]
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 19012 Accepted: 9442 Desc ...
- POJ 2828 Buy Tickets(线段树 树状数组/单点更新)
题目链接: 传送门 Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Description Railway tickets were d ...
- Buy Tickets(线段树)
Buy Tickets Time Limit:4000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- 【poj2828】Buy Tickets 线段树 插队问题
[poj2828]Buy Tickets Description Railway tickets were difficult to buy around the Lunar New Year in ...
- Buy Tickets
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 16010 Accepted: 7983 Descript ...
随机推荐
- objective-c中的category
如果有如下一个类 #import <Foundation/Foundation.h> @interface Person : NSObject @property int age; @en ...
- HTTP 417解决方案
在一次模拟HTPP请求时,本人在项目中的一般处理程序中调用客户接口返回非成功的结果.为了方便调试,所以将核心代码拷贝至控制台中进逐个调试. 在控制台中,启动调试时提示: 未经处理的异常: S ...
- js生成动态日历
效果图: 看代码: <html> <head> <title>动态日历</title> <style type="text/css& ...
- Oracle 10g 默认安装带来的用户名/密码
ORACLE数据库创建的时候,创建了一系列默认的用户和表空间 Oracle 10g 默认安装带来的用户名/密码 Username Password Description See Also CTXSY ...
- js window.open 参数设置
function OpenWin(type, obj){ window.open ("http://www.baidu.com" + type, "_blank" ...
- HDU 2502 月之数(简单递推)
月之数 Problem Description 当寒月还在读大一的时候,他在一本武林秘籍中(据后来考证,估计是计算机基础,狂汗-ing),发现了神奇的二进制数.如果一个正整数m表示成二进制,它的位数为 ...
- jQuery学习教程(2)
由于一件事情打断了我的生活节奏,每天都学习都在托托拉拉,导致很多进度都没有达到自己预期的效果 在上一个章节我学到了环境的搭建,以及对jquery的熟悉.现在开始对其具体进行熟悉了. 一.如何使用选择器 ...
- 如何在Html的div+css中去除<li>标签前面小黑点,和ul、LI部分属性方法
div是很多人做网站都会用到的,但在显示效果时前面总是会有一个小黑点,这个效果很多人不想要,但又不知到如何去除,然而我们可以用以下方法来清除. 1.在CSS中写入代码.找到相关性的CSS,在..li和 ...
- Common Configration实验
用了一个CombinedConfigration 来做属性文件的继承(套用)发现它是以先添加的ConfigureRation作为最终输出也就是如果要实现我们项目中的效果 需要从内层目录向外层目录逐 ...
- Linux crontab定时执行任务 命令格式与详细例子
基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...