POJ 2828 Buy Tickets(多校连萌,线段树模拟插入)
来源:互联网 发布:有什么网络兼职的 编辑:程序博客网 时间:2024/06/16 09:05
题目地址:http://poj.org/problem?id=2828
题意:给一个队列,第一个数是插在哪个位置上,第二个数这个人的标号,问最后的队列是什么样
思路:用线段树倒着插入即可
AC代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;const int maxn = 200010;int pos[maxn],value[maxn],sum[maxn<<2],ans[maxn<<2];void pushup(int rt){ sum[rt] = sum[rt<<1]+sum[rt<<1|1];}void build(int l,int r,int rt){ sum[rt] = r - l + 1; if(l == r) return; int m = (l + r)>>1; build(lson); build(rson);}void updata(int pos,int value,int l,int r,int rt){ if(l == r) { ans[rt] = value; sum[rt]--; return; } int m = (l + r)>>1; if(pos <= sum[rt<<1]) updata(pos,value,lson); else updata(pos-sum[rt<<1],value,rson); pushup(rt);}void shuchu(int l,int r,int rt){ if(l == r) { if(l == 1) printf("%d",ans[rt]); else printf(" %d",ans[rt]); return; } int m = (l + r)>>1; shuchu(lson); shuchu(rson);}int main(){ int n; while(scanf("%d",&n) != EOF) { for(int i=0; i<n; i++) scanf("%d%d",&pos[i],&value[i]); build(1,n,1); for(int i=n-1; i>=0; i--) updata(pos[i]+1,value[i],1,n,1); shuchu(1,n,1); printf("\n"); } return 0;}
0 0
- POJ 2828 Buy Tickets(多校连萌,线段树模拟插入)
- poj 2828 buy Tickets 用线段树模拟带插入的队列 单点更新
- poj 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- poj 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- poj 2828 Buy Tickets (线段树)
- POJ 2828--Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- POJ - 2828 - Buy Tickets (线段树)
- POJ 2828 Buy Tickets(线段树)
- poj 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- POJ 2828 Buy Tickets(线段树)
- poj-2828-Buy Tickets(线段树)
- Jenkins如何构建下一个job
- 抓取网站数据不再是难事了,Fizzler(So Easy)全能搞定
- Android动画(Animation)初识
- OVS重装
- tomcat 部署项目,不加项目名 直接访问
- POJ 2828 Buy Tickets(多校连萌,线段树模拟插入)
- slice()、substr()、subString()使用及区别
- Struts2 文件下载
- 双线性映射(密码学常用算法)
- Java编程提高性能时需注意的地方
- 关于凸优化的一些简单概念
- 按照指定格式拼接字符串
- Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
- 浅析Spring 事务(二十一) spring事务的传播行为