2828 Buy Tickets
来源:互联网 发布:八大山人 知乎 编辑:程序博客网 时间:2024/05/22 03:30
考思维的一题,从后往前更新,线段树维护所剩余的空位置。线段树还真是需要灵活运用...因为知道是线段树的题,一开始直接暴力更新,TLE,然后...discuss...太不给力了
代码如下:
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<math.h>#define max(a,b) ((a)>(b)?(a):(b))#define min(a,b) ((a)<(b)?(a):(b))#define INF 1000000000#define N 200000#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1int tree[N<<2];int val[N],pos[N],ans[N];int id;void build(int l,int r,int rt){ tree[rt]=r-l+1; if(l==r)return; int m=(l+r)>>1; build(lson); build(rson);}void update(int p,int l,int r,int rt){ tree[rt]--; if(l==r) { id=l; return; } int m=(l+r)>>1; if(tree[rt<<1]>=p)update(p,lson); else { p-=tree[rt<<1]; update(p,rson); }}int main(){ int n; while(~scanf("%d",&n)) { build(1,n,1); for(int i=1;i<=n;i++) { scanf("%d%d",&pos[i],&val[i]); } for(int i=n;i>=1;i--) { update(pos[i]+1,1,n,1); ans[id]=val[i]; } for(int i=1;i<=n;i++) { printf("%d ",ans[i]); } printf("\n"); } return 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
- Android 内存溢出解决方案(OOM) 整理总结
- frame和iframe的具体区别
- 一些Linux常用命令
- 前端CSS规范整理
- Oracle Database Instance - Oracle 实例篇 3
- 2828 Buy Tickets
- Qt 线程基础(QThread、QtConcurrent等)
- JAVA Layout
- MySQL Errcode: 28 磁盘空间不足
- 50个jQuery代码段帮你成为更出色的JS开发者
- 自动化测试管理平台ATMS(V2.0.1_8.12)下载
- Yahoo!网站性能最佳体验的34条黄金守则
- 新人 报道
- Android(Java):泛型与反射