chaotic @ 2022-04-08 16:59:40
一直编译失败又不显示哪里出错是什么鬼
本地又好好的
评测记录
附上代码:
#include<bits/stdc++.h>
using namespace std;
struct SegmentTree{
int pre=0,suf=0,data=-1e9,sum=0,left=0,right=0;
#define pre(x) c[x].pre
#define suf(x) c[x].suf
#define data(x) c[x].data
#define sum(x) c[x].sum
#define l(x) c[x].left
#define r(x) c[x].right
}c[2000010];
int a[500010],tmpx,tmpy,n,m,flag;
void built(int l,int r,int rt)
{
l(rt)=l;r(rt)=r;
if(l==r)
{
pre(rt)=suf(rt)=data(rt)=sum(rt)=a[l];
return;
}
int mid=(l+r)>>1;
built(l,mid,rt<<1);
built(mid+1,r,rt<<1|1);
pre(rt)=max(pre(rt<<1),sum(rt<<1)+pre(rt<<1|1));
suf(rt)=max(suf(rt<<1|1),sum(rt<<1|1)+suf(rt<<1));
sum(rt)=sum(rt<<1)+sum(rt<<1|1);
data(rt)=max(suf(rt<<1)+pre(rt<<1|1),max(data(rt<<1),data(rt<<1|1)));
}
SegmentTree query(int l,int r,int rt)
{
if(l<=l(rt)&&r(rt)<=r)
return c[rt];
int mid=(l(rt)+r(rt))>>1;
if(mid>=l&&mid<r)
{
SegmentTree ans,a,b;
a=query(l,r,rt<<1);
b=query(l,r,rt<<1|1);
ans.data=max(ans.data,max(a.suf+b.pre,max(a.data,b.data)));
ans.pre=max(a.pre,a.sum+b.pre);
ans.suf=max(b.suf,b.sum+a.suf);
ans.sum=a.sum+b.sum;
return ans;
}
else if(mid>=l) return query(l,r,rt<<1);
else return query(l,r,rt<<1|1);
}
void change(int w,int p,int rt)
{
if(l(rt)==r(rt))
{
pre(rt)=suf(rt)=data(rt)=sum(rt)=a[w]=p;
return;
}
int mid=(l(rt)+r(rt))>>1;
if(mid>=w) change(w,p,rt<<1);
else change(w,p,rt<<1|1);
pre(rt)=max(pre(rt<<1),sum(rt<<1)+pre(rt<<1|1));
suf(rt)=max(suf(rt<<1|1),sum(rt<<1|1)+suf(rt<<1));
sum(rt)=sum(rt<<1)+sum(rt<<1|1);
data(rt)=max(suf(rt<<1)+pre(rt<<1|1),max(data(rt<<1),data(rt<<1|1)));
}
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
built(1,n,1);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&flag,&tmpx,&tmpy);
if(flag==2) change(tmpx,tmpy,1);
else
{
if(tmpx>tmpy) swap(tmpx,tmpy);
printf("%d\n",query(tmpx,tmpy,1).data);
}
}
return 0;
}
by mmr123 @ 2022-04-08 17:01:33
很显然您应该截图或者开启代码公开
by Engulf @ 2022-04-08 17:02:30
出错啦
3 秒后将返回上一页
您不能查看本条评测记录
by chaotic @ 2022-04-08 17:03:12
哦哦哦,公开了
by Dream_weavers @ 2022-04-08 17:04:16
很有可能是你谷评测机出问题了(
by Raymondzll @ 2022-04-08 17:04:30
有没有这样一种可能,是评测机波动。
by chaotic @ 2022-04-08 17:04:50
交4次了
by chaotic @ 2022-04-08 17:07:41
草,随便交了一个其他题目AC代码也编译错误
显示No space left on device,我麻了
by chenpengda @ 2022-04-08 17:09:44
洛谷最近评测机内存没了(
by chaotic @ 2022-04-09 08:07:24
破案了(这是一个曲折的故事)
我先交了一个A+B代码,可编译,考虑到是不是MLE,数组改小可编译,但WA了
我拼命压空间,但还是爆,于是我交了一篇题解
然后题解巨大空间过了
我注意了c++下方提示
发现原因竟是不能命名SegmentTree结构体,改成了Node
还有结构体中似乎不能赋值,于是把=0与=-1e9删了,下面改成ans.dat=max(a.suf+b.pre,max(a.dat,b.dat));
这样就A了(?)
还有那次交的题解请不要判成CTJ啊