一、题目

  Buy Tickets

二、分析

  首先可以明确的是每个人的位置都是定的,那么如果从输入数据从后往前看,最后面的人进来的时候,他前面的人数肯定是定的。

  那么可以考虑,当从后往前推时,这个人插入的位置就是他前面有多少空位,假设他的位置比空位数少,那显然是不可以的,如果他的位置比空位多,那么后面的已经插入的,没有人来补这个位置了,所以显然也不合理,所以假设区间$[1,t]$刚好有$pos+1$个空位,那么它的位置应该就在最后一个空位处。

三、AC代码

 1 #include <cstdio>
2 #include <cstring>
3 #include <iostream>
4 #include <algorithm>
5 #include <vector>
6 #include <cmath>
7
8 using namespace std;
9 #define ll long long
10 #define Min(a,b) ((a)>(b)?(b):(a))
11 #define Max(a,b) ((a)>(b)?(a):(b))
12 #define P pair<int, int>
13 #define lson (rt<<1)
14 #define rson (rt<<1|1)
15 const int MAXN = 2e5;
16 int ans[MAXN + 13];
17 int sum[MAXN<<2]; //表示区间内还有多少个位置
18
19 void Build(int rt, int l, int r)
20 {
21 sum[rt] = r - l + 1;
22 if(l == r) {
23 sum[rt] = 1;
24 return;
25 }
26 int mid = (l + r) >> 1;
27 Build(lson, l, mid);
28 Build(rson, mid + 1, r);
29 }
30
31 void Update(int rt, int l, int r, int pos, int val)
32 {
33 if(l == r) {
34 sum[rt] = 0;
35 ans[l] = val;
36 return;
37 }
38 int mid = (l + r) >> 1;
39 if(pos <= sum[lson])
40 Update(lson, l, mid, pos, val);
41 else
42 Update(rson, mid + 1, r, pos - sum[lson], val);
43 sum[rt]--;
44 }
45
46 int main()
47 {
48 //freopen("input.txt", "r", stdin);
49 int N;
50 while(scanf("%d", &N) != EOF) {
51 int a, b;
52 Build(1, 1, N);
53 vector<P> vec;
54 for(int i = 0; i < N; i++) {
55 scanf("%d%d", &a, &b);
56 vec.push_back(P(a, b));
57 }
58 for(int i = vec.size()-1; i >= 0; i--) {
59 Update(1, 1, N, vec[i].first + 1, vec[i].second);
60 }
61 for(int i = 1; i <= N; i++) {
62 printf("%d%c", ans[i], i == N ? '\n' : ' ');
63 }
64
65 }
66 return 0;
67 }

POJ_2828 Buy Tickets 【线段树】的更多相关文章

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

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

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

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

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

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

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

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

  5. Buy Tickets(线段树)

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

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

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

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

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

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

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

  9. POJ 2828 Buy Tickets | 线段树的喵用

    题意: 给你n次插队操作,每次两个数,pos,w,意为在pos后插入一个权值为w的数; 最后输出1~n的权值 题解: 首先可以发现,最后一次插入的位置是准确的位置 所以这个就变成了若干个子问题, 所以 ...

  10. POJ 2828 Buy Tickets(线段树&#183;插队)

    题意  n个人排队  每一个人都有个属性值  依次输入n个pos[i]  val[i]  表示第i个人直接插到当前第pos[i]个人后面  他的属性值为val[i]  要求最后依次输出队中各个人的属性 ...

随机推荐

  1. 1.搭建NFS环境,用于存储数据

    作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-12 14:59:50 星期三 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...

  2. docker的FAQ

    1.Docker能在非Linux平台(Windows+MacOS)上运行吗? 答:可以 2 .如何将一台宿主机的docker环境迁移到另外一台宿主机? 答:停止Docker服务,将整个docker存储 ...

  3. Python append() 与深拷贝、浅拷贝

    在leetcode77中,发现list.append的结果不对.原代码: class Solution: def combine(self, n: int, k: int) -> List[Li ...

  4. codeforces 1039B Subway Pursuit【二分+随机】

    题目:戳这里 题意:一个点在[1,n]以内,我们可以进行4500次查询,每次查询之后,该点会向左或向右移动0~k步,请在4500次查询以内找到该点. 解题思路:一边二分,一边随机. 交互题似乎有好多是 ...

  5. javascript & call & apply & bind & new

    javascript & call & apply & bind & new Javascript call() & apply() vs bind()? ht ...

  6. js Array All In One

    js Array All In One array 方法,改变原数组(长度),不改变原数组(长度) https://developer.mozilla.org/en-US/docs/Web/JavaS ...

  7. Versatile Python 3.x

    Versatile Python 3.x TryPython Python 3.8.0 (default, Nov 14 2019, 22:29:45) [GCC 5.4.0 20160609] on ...

  8. js to svg flowchart

    js to svg flowchart flowchart https://flowchart.js.org/ https://github.com/adrai/flowchart.js https: ...

  9. NGK治理机制研究

    治理机制是区块链项目的重要设计.随着项目的运行,生态中的参与者需要根据实际运行情况对项目进行必要的更新和升级,以使项目持续良性发展.治理机制的作用是使不同参与者最终达成共识.治理机制直接决定这个网络生 ...

  10. js中国标准时间转换成datetime格式

    var format = function (time, format) { var t = new Date(time); var tf = function (i) { return (i < ...