社区讨论
wa 7~10!!!求调!!!
P1253扶苏的问题参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @ltip4e0f
- 此快照首次捕获于
- 2024/03/08 21:32 2 年前
- 此快照最后确认于
- 2024/03/09 07:42 2 年前
CPP
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const ll N=5e6,INF=114514520606060606;
ll T[N],la1[N],la2[N];
ll n,m;
inline ll read()
{
ll x=0,f=1; char ch=getchar();
while (!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
while (isdigit(ch)) {x=x*10+ch-'0'; ch=getchar();}
return x*f;
}
inline ll ma (ll a,ll b)
{
return (a>=b)?a:b;
}
void build (ll i,ll l,ll r,ll k,ll x)
{
if (l==r) {
T[i]=x;
return ;
}
ll mid=(l+r)>>1;
if (k<=mid) build(i<<1,l,mid,k,x);
else build(i<<1|1,mid+1,r,k,x);
T[i]=ma(T[i<<1],T[i<<1|1]);
}
void push_down (ll i)
{
if (la1[i]!=INF) {
la1[i<<1]=la1[i<<1|1]=la1[i];
la2[i<<1]=la2[i<<1|1]=0;
T[i<<1]=T[i<<1|1]=la1[i];
la1[i]=INF;
}
if (la2[i]!=0) {
la2[i<<1]+=la2[i];
la2[i<<1|1]+=la2[i];
T[i<<1]+=la2[i];
T[i<<1|1]+=la2[i];
la2[i]=0;
}
}
void change (ll i,ll l,ll r,ll L,ll R,ll x,ll f)
{
if (L<=l && r<=R) {
if (f==1) {
T[i]=x;
la1[i]=x;
}
else {
T[i]+=x;
la2[i]+=x;
}
push_down(i);
return ;
}
push_down(i);
ll mid=(l+r)>>1;
if (L<=mid) change(i<<1,l,mid,L,R,x,f);
if (R>mid) change(i<<1|1,mid+1,r,L,R,x,f);
T[i]=ma(T[i<<1],T[i<<1|1]);
}
ll query (ll i,ll l,ll r,ll L,ll R)
{
if (L<=l && r<=R) return T[i];
push_down(i);
ll mid=(l+r)>>1,x1=-INF,x2=-INF;
if (L<=mid) x1=query(i<<1,l,mid,L,R);
if (R>mid) x2=query(i<<1|1,mid+1,r,L,R);
// T[i]=ma(T[i<<1],T[i<<1|1]);
return ma(x1,x2);
}
int main()
{
freopen("P1253_7.in","r",stdin);
// cout<<INF;
n=read(); m=read();
for (ll i=0;i<=5*n;i++) la1[i]=INF;
for (ll i=1;i<=n;i++) {
ll a=read();
build(1,1,n,i,a);
}
for (ll i=1;i<=m;i++) {
ll f=read(),l=read(),r=read(),x=0;
if (f==1 || f==2) {
x=read();
change(1,1,n,l,r,x,f);
}
else printf("%lld\n",query(1,1,n,l,r));
}
// for (ll i=1;i<=n*2;i++) cout<<T[i]<<" ";
// cout<<endl;
// for (ll i=1;i<=n*2;i++) cout<<la1[i]<<" ";
// cout<<endl;
// for (ll i=1;i<=n*2;i++) cout<<la2[i]<<" ";
// cout<<endl;
return 0;
}
/*
4 4
10 4 -3 -7
1 1 3 0
2 3 4 -4
1 2 4 -9
3 1 4
*/
回复
共 1 条回复,欢迎继续交流。
正在加载回复...