zoukankan      html  css  js  c++  java
  • poj2828 Buy Tickets

    倒序处理,线段树保存有多少空位

    #include <iostream>
    #include <cstdio>
    using namespace std;
    int n, ans[200005], uu[200005], vv[200005];
    struct SGT{
    	int sum[800005];
    	void build(int o, int l, int r){
    		if(l==r)	sum[o] = 1;
    		else{
    			int mid=(l+r)>>1;
    			int lson=o<<1;
    			int rson=lson|1;
    			if(l<=mid)	build(lson, l, mid);
    			if(mid<r)	build(rson, mid+1, r);
    			sum[o] = sum[lson] + sum[rson];
    		}
    	}
    	void update(int o, int l, int r, int x, int y){
    		if(l==r){
    			ans[l] = y;
    			sum[o] = 0;
    		}
    		else{
    			int mid=(l+r)>>1;
    			int lson=o<<1;
    			int rson=lson|1;
    			if(sum[lson]>x)	update(lson, l, mid, x, y);
    			else	update(rson, mid+1, r, x-sum[lson], y);
    			sum[o] = sum[lson] + sum[rson];
    		}
    	}
    }sgt;
    int main(){
    	while(scanf("%d", &n)!=EOF){
    		sgt.build(1, 1, n);
    		for(int i=1; i<=n; i++)
    			scanf("%d %d", &uu[i], &vv[i]);
    		for(int i=n; i; i--)
    			sgt.update(1, 1, n, uu[i], vv[i]);
    		for(int i=1; i<=n; i++)
    			printf("%d ", ans[i]);
    		printf("
    ");
    	}
    	return 0;
    }
    
  • 相关阅读:
    java8中常用的新功能
    代码走查案例2
    redis的key设置每天凌晨过期的思路
    代码走查案例1
    一场没有序列化引发的血案
    面试总结
    hr相关的
    mysql底层原理
    如何学好并发编程
    流程图总结
  • 原文地址:https://www.cnblogs.com/poorpool/p/8497135.html
Copyright © 2011-2022 走看看