博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ - 2828 Buy Tickets(线段树单点更新)
阅读量:6126 次
发布时间:2019-06-21

本文共 1805 字,大约阅读时间需要 6 分钟。

题意

排队买票,依次给出当前人要插队的位置,每个人有个编号,然后问你最后整个的序列是什么?

分析

最后一个人的要插入的位置是确定的,所以逆序遍历,线段树结点存储的是当前区域的空位置数量。我们就可以倒着来插,最后一个固定后,如果倒数第二个插入的位置小于当前的空格数,那么就往前插到序号上,否则往后插,往后的话序号需要减去当前这个数左边的空位数。因为左右都是从0位置开始标记的,因此结构体里需要维持节点左右边的空位个数,(当前插队序号小于左边空位插左边,大于的话插右边,但是需要需要减去左边空位)。因为右边也是从0位置开始算起的。

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define rep(i,e) for(int i=0;i<(e);i++)#define rep1(i,e) for(int i=1;i<=(e);i++)#define repx(i,x,e) for(int i=(x);i<=(e);i++)#define X first#define Y second#define PB push_back#define MP make_pair#define mset(var,val) memset(var,val,sizeof(var))#define scd(a) scanf("%d",&a)#define scdd(a,b) scanf("%d%d",&a,&b)#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)#define pd(a) printf("%d\n",a)#define scl(a) scanf("%lld",&a)#define scll(a,b) scanf("%lld%lld",&a,&b)#define sclll(a,b,c) scanf("%lld%lld%lld",&a,&b,&c)#define IOS ios::sync_with_stdio(false);cin.tie(0)#define lc idx<<1#define rc idx<<1|1#define lson l,mid,lc#define rson mid+1,r,rcusing namespace std;typedef long long ll;template
void test(T a){cout<
<
void test(T a,T2 b){cout<
<<" "<<
void test(T a,T2 b,T3 c){cout<
<<" "<<<" "<
<
>1; build(lson); build(rson); tree[idx].w=tree[lc].w+tree[rc].w;}void update(int pos,int val,int idx){ if(tree[idx].l==tree[idx].r){ tree[idx].w--; ans[tree[idx].l]=val; return; } if(pos<=tree[lc].w) update(pos,val,lc); else update(pos-tree[lc].w,val,rc); tree[idx].w=tree[lc].w+tree[rc].w;}int main() {#ifdef LOCAL freopen("in.txt","r",stdin);#endif // LOCAL while(~scd(n)){ for(int i=1;i<=n;i++) scdd(pos[i],val[i]); build(1,n,1); for(int i=n;i>0;i--) update(pos[i]+1,val[i],1); for(int i=1;i

 

转载于:https://www.cnblogs.com/fht-litost/p/9291857.html

你可能感兴趣的文章
下一步工作分配
查看>>
Response. AppendHeader使用大全及文件下载.net函数使用注意点(转载)
查看>>
Wait Functions
查看>>
代码描述10313 - Pay the Price
查看>>
jQuery最佳实践
查看>>
centos64i386下apache 403没有权限访问。
查看>>
vb sendmessage 详解1
查看>>
jquery用法大全
查看>>
Groonga 3.0.8 发布,全文搜索引擎
查看>>
PC-BSD 9.2 发布,基于 FreeBSD 9.2
查看>>
网卡驱动程序之框架(一)
查看>>
css斜线
查看>>
Windows phone 8 学习笔记(3) 通信
查看>>
重新想象 Windows 8 Store Apps (18) - 绘图: Shape, Path, Stroke, Brush
查看>>
Revit API找到风管穿过的墙(当前文档和链接文档)
查看>>
Scroll Depth – 衡量页面滚动的 Google 分析插件
查看>>
Windows 8.1 应用再出发 - 视图状态的更新
查看>>
自己制作交叉编译工具链
查看>>
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
查看>>
[物理学与PDEs]第3章习题1 只有一个非零分量的磁场
查看>>