POJ:2828 Buy Tickets(线段树)
来源:互联网 发布:智能电视软件市场 编辑:程序博客网 时间:2024/05/22 00:53
思路真的很奇妙。
从后往前,pos的意义是此时该人前面的空位。
这样用线段树寻找第k个元素即可。
#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <cmath>#include <vector>#include <queue>#include <set>#include <map>#include <algorithm>#define ll long long#define INF 2139062143#define inf -2139062144#define MOD 20071027#define MAXN 200005#define LEN 222222<<2using namespace std;int num[MAXN],val[MAXN],arr[MAXN];struct Segment_Tree{private : int sum[LEN],sz; void pushup(int o) { sum[o]=sum[o<<1]+sum[o<<1|1]; } int myquery(int o,int L,int R,int v) { if(L==R) { sum[o]--; return L; } int M=(L+R)>>1; int p; if(v<=sum[o<<1]) p=myquery(o<<1,L,M,v); else p=myquery(o<<1|1,M+1,R,v-sum[o<<1]); pushup(o); return p; }public: void init(int n) { sz=n; } void build(int o,int L,int R) { sum[o]=R-L+1; if(L==R) return ; else { int M=(L+R)>>1; build(o<<1,L,M); build(o<<1|1,M+1,R); } } int query(int p) { return myquery(1,1,sz,p); }};Segment_Tree tree;int main(){ int n; while(scanf("%d",&n)!=EOF) { for(int i=1; i<=n; ++i) scanf("%d%d",&num[i],&val[i]); tree.init(n); tree.build(1,1,n); for(int i=n; i>=1; --i) { int pos=tree.query(num[i]+1); arr[pos]=val[i]; } for(int i=1; i<=n; ++i) if(i==1) printf("%d",arr[i]); else printf(" %d",arr[i]); 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【线段树】
- 网上常用免费WebServices集合
- Hdu 3339 In Action[最短路+01背包]
- A. George and Sleep
- 网站优化不得不注意的问题
- 在Oracle中查询包含某列的表名
- POJ:2828 Buy Tickets(线段树)
- VMware ESXi中Windows Server 2008 R2虚拟机每隔1小时自动重启
- 详解qt路径-从 相对路径 说开来(从C++到Qt) .
- 二叉树的遍历(前序、中序、后序、层序),递归和非递归实现
- hadoop中的一些基本操作及wordcount的运行操作示范
- 网页设计必知:什么是CSS?它的能做些什么?
- mysql 多表合并查询
- ViewPager的IllegalStateException运行异常处理
- 总理如何破解中国最大民生难题?