• HDU 1556Color the ball


    题意:线段树水题,区间更新,带上lazy标记即可;

    #include<iostream>
    #include<queue>
    #include<vector>
    #include<map>
    #include<set>
    #include<algorithm>
    #include<stack>
    #include<cstring>
    #include<cstdio>
    #define N 100005
    #define INF 0x3f3f3f3f
    using namespace std;
    typedef struct node{
    	int x;int y;int date;
    }node;
    typedef struct list{
    	int x;int y;
    }list;
    node a[4*N];
    list c[N];
    int b[N];
    void built(int root,int first,int end){
    	if(first==end){
    		a[root].x=first;a[root].y=end;a[root].date=0;
    		return ;
    	}
    	int mid=(first+end)/2;
    	built(root*2,first,mid);
    	built(root*2+1,mid+1,end);
    	a[root].x=a[root*2].x;a[root].y=a[root*2+1].y;a[root].date=0;
    }
    void U(int root,int first,int end,int l,int r){
    	if(l<=first&&end<=r){
    		a[root].date++;
    		return ;
    	}
    	int mid=(first+end)/2;
    	if(a[root].date!=0){
    		a[root*2].date+=a[root].date;
    		a[root*2+1].date+=a[root].date;
    		a[root].date=0;
    	}
    	if(l<=mid)  U(2*root,first,mid,l,r);
    	if(r>mid)   U(2*root+1,mid+1,end,l,r);
    }
    void Q(int root,int first,int end){
    	if(first==end){
    		b[first]=a[root].date;
    		return ;
    	}
    	if(a[root].date!=0){
    		a[root*2].date+=a[root].date;
    		a[root*2+1].date+=a[root].date;
    		a[root].date=0;
    	}
    	int mid=(first+end)/2;
    	Q(2*root,first,mid);
    	Q(2*root+1,mid+1,end);
    }
    int main(){
    	int n;
    	while(scanf("%d",&n)==1&&n!=0){
    		memset(b,0,sizeof(b));
    		for(int i=1;i<=n;i++){
    			scanf("%d %d",&c[i].x,&c[i].y);
    		}
    		built(1,1,n);
    		for(int i=1;i<=n;i++){
    			U(1,1,n,c[i].x,c[i].y);
    		}
    		Q(1,1,n);
    		for(int i=1;i<=n;i++){
    			if(i==1){
    				printf("%d",b[i]);
    			}
    			else{
    				printf(" %d",b[i]);
    			}
    		}
    		printf("
    ");
    	}
    	return 0;
    }


  • 相关阅读:
    web.config中的customErrors标记的用法
    算法系列15天速成[索引]
    log4net的简单使用
    Cookie帮助类
    ASPxTreeList及ASPxGridView使用
    javascript获取页面中的位置
    如何部署windows服务?
    基于T4模板引擎生成静态网站(CMS)
    SqlServer实现递归查询
    安卓(AndRoid)开发环境搭建之HelloWord
  • 原文地址:https://www.cnblogs.com/wang9897/p/7624401.html
Copyright © 2020-2023  润新知