社区讨论
样例全WA求条
P4560[IOI 2014] Wall 砖墙参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mjpkkila
- 此快照首次捕获于
- 2025/12/28 18:11 2 个月前
- 此快照最后确认于
- 2025/12/28 22:24 2 个月前
代码
CPP#include<bits/stdc++.h>
using namespace std;
long long n,k,op,ql,qr,h,mxx,mii;
struct node
{
int lt,rt;
long long mx=0,mi=1e18;
}dt[8000005];
void build(int l,int r,int idx)
{
dt[idx].lt=l;
dt[idx].rt=r;
if(l==r)return ;
int mid=(l+r)>>1;
build(l,mid,idx*2);
build(mid+1,r,idx*2+1);
}
void push_down(int idx)
{
mxx=dt[idx].mx;
mii=dt[idx].mi;
for(int lr=0;lr<2;lr++)
{
int c=2*idx+lr;
if(dt[c].mx<mxx)dt[c].mx=mxx;
if(dt[c].mi<mxx)dt[c].mi=mxx;
if(dt[c].mx>mii)dt[c].mx=mii;
if(dt[c].mi>mii)dt[c].mi=mii;
}
dt[idx].mx=0;
dt[idx].mi=1e18;
}
void updatemx(int l,int r,int idx,int mx)
{
if(l==dt[idx].lt&&r==dt[idx].rt)
{
if(dt[idx].mx<mx)dt[idx].mx=mx;
if(dt[idx].mi<mx)dt[idx].mi=mx;
return;
}
int mid=dt[2*idx].rt;
push_down(idx);
if(l<=mid)updatemx(max(l,dt[idx].lt),mid,idx*2,mx);
if(r>mid)updatemx(mid+1,min(dt[idx].rt,r),idx*2+1,mx);
}
void updatemi(int l,int r,int idx,int mi)
{
if(l==dt[idx].lt&&r==dt[idx].rt)
{
if(dt[idx].mx>mi)dt[idx].mx=mi;
if(dt[idx].mi>mi)dt[idx].mi=mi;
return;
}
int mid=dt[2*idx].rt;
push_down(idx);
if(l<=mid)updatemi(max(l,dt[idx].lt),mid,idx*2,mi);
if(r>mid)updatemi(mid+1,min(dt[idx].rt,r),idx*2+1,mi);
}
void query(int idx)
{
if(dt[idx].lt==dt[idx].rt)
{
cout<<dt[idx].mx<<'\n';
return ;
}
push_down(idx);
query(idx*2);
query(idx*2+1);
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n>>k;
build(1,n,1);
while(k--)
{
cin>>op>>ql>>qr>>h;
ql++;
qr++;
if(op==1)
{
updatemx(ql,qr,1,h);
}
else
{
updatemi(ql,qr,1,h);
}
}
query(1);
return 0;
}
样例一我的输出:
00
0
39412
39412
39412
39412
39412
48623
48623
救救我
回复
共 2 条回复,欢迎继续交流。
正在加载回复...