zoukankan      html  css  js  c++  java
  • CF915E Physical Education Lessons

    CF915E Physical Education Lessons

    动态开点线段树和询问区间 sum 板子题,没有什么好说的,注意动态开点线段树的空间问题即可。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
    #define getchar()(p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
    char buf[1<<21],*p1=buf,*p2=buf;
    template <typename T>
    inline void read(T &x){
    	x=0;char ch=getchar();bool f=false;
    	while(!isdigit(ch)){if(ch=='-'){f=true;}ch=getchar();}
    	while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
    	x=f?-x:x;
    	return ;
    }
    template <typename T>
    inline void write(T x){
    	if(x<0) putchar('-'),x=-x;
    	if(x>9) write(x/10);
    	putchar(x%10^48);
    	return ;
    }
    #define ll long long
    const int N=3e5+5,INF=1e9+7;
    int n,q,root,cur;
    int sum[N*50],ls[N*50],rs[N*50],tag[N*50];
    inline void Pushup(int x){
    	int res=0;
    	if(ls[x]) res+=sum[ls[x]];
    	if(rs[x]) res+=sum[rs[x]];
    	sum[x]=res;
    	return ;
    }
    void PushDown(int x,int l,int r){
    	if(tag[x]==-1) return ;
    	if(!ls[x]) ls[x]=++cur;
    	if(!rs[x]) rs[x]=++cur;
    	tag[ls[x]]=tag[x];
    	tag[rs[x]]=tag[x];
    	int mid=l+r>>1;
    	sum[ls[x]]=tag[x]*(mid-l+1);
    	sum[rs[x]]=tag[x]*(r-mid);
    	tag[x]=-1;
    	return ;
    }
    void Modify(int &x,int l,int r,int ql,int qr,int v){
    	if(!x) x=++cur,tag[x]=-1;
    	if(ql<=l&&r<=qr){
    		tag[x]=v,sum[x]=(r-l+1)*v;
    		return ;
    	}
    	PushDown(x,l,r);
    	int mid=l+r>>1;
    	if(ql<=mid) Modify(ls[x],l,mid,ql,qr,v);
    	if(qr>mid) Modify(rs[x],mid+1,r,ql,qr,v);
    	Pushup(x);
    	return ;
    }
    int main(){
    	read(n),read(q);
    	for(int i=1;i<=q;i++){
    		int op,l,r;read(l),read(r),read(op);
    		if(op==1) Modify(root,1,n,l,r,1);
    		else Modify(root,1,n,l,r,0);
    		write(n-sum[root]),putchar('
    ');
    	}
    	
    	return 0;
    }
    
  • 相关阅读:
    Spring注解(环境)
    Spring注解(赋值相关)
    C#:关联程序和文件
    C#: 获取执行程序所在路径和启动资源管理器
    C#:WPF绘制问题
    WPF:窗体置顶
    C#:屏幕显示区域问题
    C#:文件、文件夹特别操作
    C#:插件、框架
    WPF:MenuItem样式
  • 原文地址:https://www.cnblogs.com/Akmaey/p/14676962.html
Copyright © 2011-2022 走看看