0分求助
查看原帖
0分求助
418419
ko_no_lzx_da楼主2022/2/18 16:28
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#include<cmath>
#include<algorithm>
using namespace std;
int l,n,a,b,i=0,hei=0;
struct node{
	int ll,rr;
	int sum;//没树的数 
	int sm;
	int lan;
}tree[1000000];
void build(long long l,long long r,long long n){
	tree[n].ll=l;
	tree[n].rr=r;
	if(l==r){
		return;
	}
	build(l,(l+r)/2,n*2);
	build((l+r)/2+1,r,n*2+1);
}
void down(int num){
	tree[num*2].lan=1;
	tree[num*2+1].lan=1;
	tree[num].lan=0;
	tree[num*2].sm=0;
	tree[num*2+1].sm=0;
	tree[num*2].sum=tree[num*2].rr-tree[num*2].ll+1;
	tree[num*2+1].sum=tree[num*2+1].rr-tree[num*2+1].ll+1;
	return;
}
void cut(int l,int r,int num){
	if(a<=l&&r<=b){
		tree[num].sum=r-l+1;
		hei+=tree[num].sm;
		tree[num].sm=0;
		tree[num].lan=1;
		return;
	}
	if(tree[num].lan){
		down(num);
	}
	if(a<=(l+r)/2)cut(l,(l+r)/2,num*2);
	if(b>(l+r)/2)cut((l+r)/2+1,r,num*2+1);
	tree[num].sum=tree[num*2].sum+tree[num*2+1].sum;
	tree[num].sm=tree[num*2].sm+tree[num*2+1].sm;
}
void plant(int l,int r,int num){
	if(a<=l&&r<=b){
		tree[num].sm=tree[num].sum;
		tree[num].sum=0;
		return;
	}
	if(tree[num].lan){
		down(num);
	}
	if(a<=(l+r)/2)plant(l,(l+r)/2,num*2);
	if(b>(l+r)/2)plant((l+r)/2+1,r,num*2+1);
	tree[num].sum=tree[num*2].sum+tree[num*2+1].sum;
	tree[num].sm=tree[num*2].sm+tree[num*2+1].sm;
}
int main(){
	cin >>l>>n;
	build(1,1+l,1);
	for(i=0;i<n;i++){
		int t;
		cin >>t>>a>>b;
		a++;
		b++;
		if(t==0){
			cut(1,l+1,1);
			long long t=1,t1=1;
			for(long long j=1;j<=12;j++){
				cout <<j<<" ("<<tree[j].sm<<","<<tree[j].sum<<") ";
				if(t==j){
					cout <<endl;
					t+=2*t1;
					t1++;
				}
			}
			cout <<endl; 
		}
		if(t==1){
			plant(1,l+1,1);
			long long t=1,t1=1;
			for(long long j=1;j<=12;j++){
				cout <<j<<" ("<<tree[j].sm<<","<<tree[j].sum<<") ";
				if(t==j){
					cout <<endl;
					t+=2*t1;
					t1++;
				}
			}
			cout <<endl; 
		}
	}
	cout <<tree[1].sm<<endl<<hei;
	return 0;
}
//1 2 3 4 5 6 7 8 9 10 11
//0 0 0 0 0 0 0 0 0 0 0  0



2022/2/18 16:28
加载中...