poj2828~线段树倒推
来源:互联网 发布:怎么查看淘宝开店时间 编辑:程序博客网 时间:2024/06/05 04:59
一开始看到别人说用线段树做,看了题目,没一点想法,借鉴前人的思想,才想到用倒推来做,很基础的点更新,想清楚了就简单,不然还是蛮纠结的。
ACcode:
#include<stdio.h>#include<string.h>#include<iostream>using namespace std;const int size=200000;int add[size+10][2];int sum[size<<2],res[size+10];void pushup(int rt){ sum[rt]=sum[rt<<1]+sum[rt<<1|1];}void build(int rt,int l,int r){ if (l==r) { sum[rt]=1; return ; } int mid=(l+r)>>1; build(rt<<1,l,mid); build(rt<<1|1,mid+1,r); pushup(rt);}void update(int rt,int l,int r,int p,int v){ if (l==r) { sum[rt]=0; res[l]=v; return ; } int mid=(l+r)>>1; if (p<sum[rt<<1]) update(rt<<1,l,mid,p,v); else update(rt<<1|1,mid+1,r,p-sum[rt<<1],v); pushup(rt);}int main(){ int i,n; while (~scanf("%d",&n)) { build(1,1,n); for (i=1;i<=n;i++) scanf("%d %d",&add[i][0],&add[i][1]); for (i=n;i>0;i--) update(1,1,n,add[i][0],add[i][1]); for (i=1;i<n;i++) printf("%d ",res[i]); printf("%d\n",res[i]); } return 0;}
- poj2828~线段树倒推
- 线段树—倒推优化
- poj2828【线段树】
- poj2828---线段树
- poj2828线段树
- poj2828(线段树)
- poj2828线段树
- poj2828(线段树)
- POJ2828线段树
- poj2828 BuyTickets 线段树
- POJ2828(线段树)
- POJ2828线段树+逆序
- POJ2828 Buy Tickets 线段树
- 线段树典型例题--poj2828
- poj2828 线段树单点更新
- poj2828----线段树--------单点更新
- poj2828(线段树应用)
- POJ2828 Buy Tickets(线段树)
- wordpress 通过页面ID 获取内容
- 借助开源项目,学习软件开发 (learn-with-open-source)
- 给想当程序员的大二学生的建议--转帖
- 高质量编程的11条建议
- 你做过的最有效的提高你的编程水平的一件事情是什么--转帖
- poj2828~线段树倒推
- 构造函数和析构函数能否声明为虚函数?
- 虚析构函数存在的理由
- 企业版IDP的申请及“In House”发布
- QTabWidget
- TCP/IP的三次握手连接和四次握手关闭
- CodeForces Round #140(226B) - Naughty Stone Piles
- label标签的for属性用法
- Q_OBJECT宏的作用