社区讨论

为什么编译错误

P4560[IOI 2014] Wall 砖墙参与者 5已保存回复 8

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
8 条
当前快照
1 份
快照标识符
@mkl3d6cd
此快照首次捕获于
2026/01/19 19:38
上个月
此快照最后确认于
2026/01/23 16:00
4 周前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
//#define int long long
const int MAXN=2e6+7,INF=1e9;
int N,M;
struct node{
	int L=0,R=INF;
}Tag[MAXN<<2],EMPTY;
node merge(const node &lazy1,const node &lazy2){
	// lazy1先执行 lazy2后执行
	// 计算出一个总的lazy标记
	node lazy3;
	lazy3.L=max(lazy1.L,lazy2.L);
	lazy3.R=max(lazy1.R,lazy2.L);
	lazy3.L=min(lazy3.L,lazy2.R);
	lazy3.R=min(lazy3.R,lazy2.R);
	return lazy3;
}
void push_down(int x){
    Tag[x*2]=merge(Tag[x*2],Tag[x]);
    Tag[x*2+1]=merge(Tag[x*2+1],Tag[x]);
	Tag[x]=EMPTY;    
}
void range_modify(int L,int R,int x,int pL,int pR,node change){

    if (R<pL || pR<L)  return;
    if (L>=pL && R<=pR)
    {
        Tag[x]=merge(Tag[x],change);
        return;
    }
    push_down(x);
    int mid=(L+R)/2;
    range_modify(L,mid,x*2,pL,pR,change);
    range_modify(mid+1,R,x*2+1,pL,pR,change);
}
void query(int L,int R,int x,int QL,int QR){ // 查询默认QL=QR 目的是为了把A[Ql]的值纠正 
    if (R<QL || QR<L)  return;
    if (L>=QL && R<=QR)
    {
    	cout<<Tag[x].L<<"\n";
    	return;
    }
    int mid=(L+R)/2;
    push_down(x);
    query(L,mid,x*2,QL,QR);
	query(mid+1,R,x*2+1,QL,QR);
}

//支持 单点修改 区间求和
signed main(){
	int n,k,t,L,R,h;	cin>>n>>k;
	for (int i=1;i<=k;i++)
	{
		cin>>t>>L>>R>>h;
		L++;R++;
		node now;
		if (t==1) now.L=h;
		else now.R=h;
		range_modify(1,n,1,L,R,now);
	}
	for (int i=1;i<=n;i++)
//	{
		query(1,n,1,i,i);
//		cout<<A[i]<<endl;
//	}
}

回复

8 条回复,欢迎继续交流。

正在加载回复...