【POJ2828】Buy Tickets(线段树) 题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列。 n<=200000 思路:顺序来只能用splay维护 考虑倒序,对于插入到第K个位置,在线段树二分第K个0的位置,类似于主席树 将其插入后将这个位置修改为已经有数 单点修改 1vart:array...
POJ 2828 Buy Tickets(线段树单点) https://vjudge.net/problem/POJ-2828 题目意思:有n个数,进行n次操作,每次操作有两个数pos, ans。pos的意思是把ans放到第pos 位置的后面,pos后面的数就往后推一位。最后输出每个位置的ans。 思路:根据题 目可知,最后插入的位置的数才是最终不变的数,所以可以从最后的输入...
【POJ2828】Buy Tickets(线段树) 倒序 题意:有一个输入序列,每次操作要把b[i]插入到第a[i]个,在第a[i]个后面的要后移,问最后序列。 n<=200000 思路:顺序来只能用splay维护 考虑倒序,对于插入到第K个位置,在线段树二分第K个0的位置,类似于主席树 将其插入后将这个位置修改为已经有数 单点修改 1vart...
{intpos,zh; };node per[M];voidpush_up(intnow) { sum[now]=sum[now*2]+sum[now*2+1]; }voidbuild(intl,intr,intnow) {if(l==r) { sum[now]=1;return; }intm=(l+r)/2; build(lson); build(rson); push_up(now); }voidchange(intp,intv,intl,intr,intnow) {if(l==r) { an...
poj2828 Buy Tickets 。要求把队伍最后的状态输出。 逆向思考。这样考虑,最后一个人一定会得到当前队伍他想要的位置,如果我们往前一个阶段,倒数第二个人也一定能得到他想要的位置……,也就是说,我们可以这样处理,我们把最后一个人插入,然后忽略它,再把倒数第二个人插入。即,我们找出当前队伍他想要插入的位置pos的...
POJ-2828-Buy Tickets http://poj.org/problem?id=2828 线段树,逆序插入 #include<iostream>#include<cstdio>#include<cstring>#include<cstdlib>using namespace std;#define N 200010struct cam{ int x,y; int num;}list[N*8];int pos[N],value[N],ans[N];int n;void build(int k,int x,int y...
POJ 2828 Buy Tickets(神题!线段树or树状数组) 2014-05-16 12:27 −... Rayn 0 202 BUY LOW, BUY LOWER, POJ - 1952(LIS+去重计数) 2019-12-11 21:15 −一开始疯狂WA,后来用别人题解代码debug发现 2 1 1 这组数据应该输出1,而我输出0,原来是ans初始化错了。。。 解析: 我去重的思想是,如果...
POJ 2828 Buy Tickets 题目链接:https://vjudge.net/problem/POJ-2828 题目大意: 插队买票,有 n 个人依次插队,一开始买票队列为空,每个插队的人有两个属性 (pos, val) ,pos 表示这个人插队插在了 pos 位置,val 代表这个人的 id,输出 n 个人插完队后形成的序列所对应的 id 序列。
题目链接:poj 2828 Buy Tickets 题目大意:给定N,表示有个人,给定每一个人站入的位置,以及这个人的权值,如今按队列的顺序输出每一个人的权值。 解题思路:第K大元素,非常巧妙,将人入队的顺序倒过来看,就是纯第K大问题,然后用树状数组还是线段树就都能够做了。
POJ 2828 Buy Tickets (线段树) 题意:给定 n 个人,每次在第 pos 位置,插入一个人,然后后面的向后移动,问你最后的顺序是什么。 析:肯定不能模拟,要不然,肯定TLE,然后我们可以倒着考虑,最后一个人的位置是肯定能确定的,因为他就在最后才插入的,然后剩下的n-1个时,第n-1个人的相对位置也就确定了,依次,...