Buy Tickets 【POJ - 2828】【线段树】
有N次操作,每次都是将第i个数放置在第pos个数的后面,并且这个数的值是val。
这个线段树的思维确实很好,我们可以发现,后面放进去的数,一定是强制位置的,而前面放的数,会随着后面的数进入而改变位置,所以我们可以尝试着先放后面的数,再处理前面的数,最后一个数一定是放在(pos[N] + 1)这个位置上的,而再后面的数呢,如果本来是放在pos[N]前面的,可能还是在pos[N]的前面,跟什么有关呢?可以多举几组例子,不难发现,假如这个数原先要放在第pos(i)的位置后面,现在呢在pos(i)及其前面已经没有那么多的位置了,说明了这些位置被其他的人给占有了,也相对应的,它的位置也是要相对后移,因为原本在它之后的操作如果有在它之前位置上的话,也就是会让它的位置向后挪动的道理,而在它之前操作的是不影响的。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <string>
#include <cstring>
#include <algorithm>
#include <limits>
#include <vector>
#include <stack>
#include <queue>
#include <set>
#include <map>
#define lowbit(x) ( x&(-x) )
#define pi 3.141592653589793
#define e 2.718281828459045
#define INF 0x3f3f3f3f
#define HalF (l + r)>>1
#define lsn rt<<1
#define rsn rt<<1|1
#define Lson lsn, l, mid
#define Rson rsn, mid+1, r
#define QL Lson, ql, qr
#define QR Rson, ql, qr
#define myself rt, l, r
using namespace std;
typedef unsigned long long ull;
typedef long long ll;
const int maxN = 2e5 + ;
int tree[maxN<<], N, pos[maxN], val[maxN], ans[maxN];
inline void pushup(int rt) { tree[rt] = tree[lsn] + tree[rsn]; }
inline void buildTree(int rt, int l, int r)
{
if(l == r) { tree[rt] = ; return; }
int mid = HalF;
buildTree(Lson);
buildTree(Rson);
pushup(rt);
}
inline void update(int rt, int l, int r, int qx, int num)
{
if(l == r)
{
tree[rt] = ;
ans[l] = num;
return;
}
int mid = HalF;
if(qx <= tree[lsn]) update(Lson, qx, num);
else update(Rson, qx - tree[lsn], num);
pushup(rt);
}
int main()
{
while(scanf("%d", &N) != EOF)
{
buildTree(, , N);
for(int i=; i<=N; i++) scanf("%d%d", &pos[i], &val[i]);
for(int i=N; i>=; i--) update(, , N, pos[i] + , val[i]);
for(int i=; i<=N; i++) printf("%d%c", ans[i], i == N ? '\n' : ' ');
}
return ;
}
Buy Tickets 【POJ - 2828】【线段树】的更多相关文章
- Buy Tickets POJ - 2828 思维+线段树
Buy Tickets POJ - 2828 思维+线段树 题意 是说有n个人买票,但是呢这n个人都会去插队,问最后的队列是什么情况.插队的输入是两个数,第一个是前面有多少人,第二个是这个人的编号,最 ...
- H - Buy Tickets POJ - 2828 逆序遍历 树状数组+二分
H - Buy Tickets POJ - 2828 这个题目还是比较简单的,其实有思路,不过中途又断了,最后写了一发别的想法的T了. 然后脑子就有点糊涂,不应该啊,这个题目应该会写才对,这个和之前的 ...
- POJ 2828 (线段树 单点更新) Buy Tickets
倒着插,倒着插,这道题是倒着插! 想一下如果 Posi 里面有若干个0,那么排在最前面的一定是最后一个0. 从后往前看,对于第i个数,就应该插在第Posi + 1个空位上,所以用线段树来维护区间空位的 ...
- POJ 2828 线段树(想法)
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 15422 Accepted: 7684 Desc ...
- poj 2828(线段树单点更新)
Buy Tickets Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 18561 Accepted: 9209 Desc ...
- poj 2828 线段树
http://poj.org/problem?id=2828 学到的思维: 1.变化的或者后来的优先影响前面的,那么从最后一个往前看,最后一个就成了 确定的, 而且后来的也能够确定----假设从前往后 ...
- poj 2828(线段树 逆向思考) 插队是不好的行为
http://poj.org/problem?id=2828 插队问题,n个人,下面n行每行a,b表示这个人插在第a个人的后面和这个人的编号为b,最后输出队伍的情况 涉及到节点的问题可以用到线段树,这 ...
- POJ 2828 线段树 逆序插入
思路: 1.线段树 逆着插入就OK了 2.块状链表 (可是我并不会写) //By SiriusRen #include <cstdio> #include <cstring> ...
- POJ 2828 线段树活用
题目大意:依次描述了一个N个人的队伍,每个人所站的序号以及他的价值,依次描述每个人的过程中,存在序号相同的人,表示该人插入到了前一个序号相同的人的前面.最后输出整个队伍的值排列情况. 这个题目确实难以 ...
- (中等) POJ 2828 Buy Tickets , 逆序+线段树。
Description: Railway tickets were difficult to buy around the Lunar New Year in China, so we must ge ...
随机推荐
- java_第一年_JavaWeb(10)
JavaWeb的两种开发模式 JSP+JavaBean框架:JavaBean负责封装数据.提供方法,JSP负责处理用户请求和显示数据:只能开发较为简单的业务: JSP+JavaBean+Servlet ...
- [2019杭电多校第六场][hdu6638]Snowy Smile(维护区间最大子段和)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6638 题意为在一个平面上任意选择一个长方形,使得长方形内点权和最大. 因为长方形可以任意选择,所以上下 ...
- F. Fixing Banners
http://codeforces.com/gym/102394/problem/F F. Fixing Banners time limit per test 1 second memory lim ...
- [C] Re-execute itself from elf file.
Re-execute itself from elf file. #define _GNU_SOURCE #include <sched.h> #include <stdio.h&g ...
- 分布式唯一ID生成器
在应用程序中,经常需要全局唯一的ID作为数据库主键.如何生成全局唯一ID? 首先,需要确定全局唯一ID是整型还是字符串?如果是字符串,那么现有的UUID就完全满足需求,不需要额外的工作.缺点是字符串作 ...
- C#传特定的值,获得特定的数组排序
一,在实际业务中,我们会有当我们传任何值进来时,我们要有特定的排序,,比如传进来的是"生物", "历史","化学", 但实际上我们需要的是& ...
- mysql常见的查询语句
select * from 表名 查询此表所有数据 select * from 表名 where 字段名 > 判断条件 查询某表中的某字段符合条件的数据 select * f ...
- 解决 vue-cli构建项目自动打开浏览器问题
1.打开项目下的config/index.js 2.找到module.exports的 dev下的 autoOpenBrowser ,将 false 改成 true 3.控制台输入:npm run d ...
- weakHashMap 用法
WeakHashMap,此种Map的特点是: 当除了自身有对key的引用外,此key没有其他引用,那么GC之后此map会自动丢弃此值 当使用 WeakHashMap 时,即使没有显示的添加或删除任何元 ...
- centos7 安装pip 和 Django过程
[root@localhost ~]# yum install python-pip 已加载插件:fastestmirror Loading mirror speeds from cached hos ...