冈崎梦美 @ 2018-04-08 23:20:40
药丸啊,感觉自己写的并没有任何不妥……虽然我知道这题写线段树会MLE但是还是决定写一下结果挂了……调了半天也没调好,求救。
#include<bits/stdc++.h>
#define maxn 5000001
using namespace std;
struct node
{
int l,r,val,lazy;
}tree[maxn*4];
int n,m;
void write(int x)
{
if (x<0) x=-x;
if (x>9) write(x/10);
putchar(x%10+'0');
}
int read()
{
int x=0;char ch;
for(;!isdigit(ch);ch=getchar());
for(;isdigit(ch);ch=getchar()) x=x*10+ch-'0';
return x;
}
void push_up(int p)
{
tree[p].val=min(tree[p*2].val,tree[p*2+1].val);
}
void build(int l,int r,int p)
{
if (l==r)
{
tree[p].l=tree[p].r=l;
tree[p].val=read();
return;
}
int mid=(l+r)/2;
build(l,mid,p*2);
build(mid+1,r,p*2+1);
push_up(p);
}
void push_down(int p)
{
tree[p*2].val+=tree[p].lazy*(tree[p*2].r-tree[p*2].l+1);
tree[p*2+1].val+=tree[p].lazy*(tree[p*2+1].r-tree[p*2+1].l+1);
tree[p*2].lazy+=tree[p].lazy;
tree[p*2+1].lazy+=tree[p].lazy;
tree[p].lazy=0;
}
void updata(int l,int r,int C,int p)
{
if (tree[p].l==l&&tree[p].r==r)
{
tree[p].val+=C*(tree[p].r-tree[p].l);
tree[p].lazy+=C;
return;
}
if (tree[p].l==tree[p].r) return;
push_down(p);
int mid=(tree[p].l+tree[p].r)/2;
if (r<=mid) updata(l,r,C,p*2);
else if (l>mid) updata(l,r,C,p*2+1);
else
{
updata(l,mid,C,p*2);
updata(mid+1,r,C,p*2+1);
}
push_up(p);
}
int query(int l,int r,int p)
{
if (tree[p].l==l&&tree[p].r==r) return tree[p].val;
push_down(p);
int mid=(tree[p].l+tree[p].r)/2,res=0;
if (r<=mid) res=query(l,r,p*2);
else if (l>mid) res=query(l,r,p*2+1);
else res=min(query(l,mid,p*2),query(mid+1,r,p*2+1));
return res;
}
int main()
{
n=read();m=read();
build(1,n,1);
for(int i=1;i<=m;i++)
{
int l=read(),r=read(),num=read();
updata(l,r,num,1);
}
write(query(1,n,1));
return 0;
}
by Anguei @ 2018-04-08 23:24:15
@LGW2016B02 有时候 RE 就是严重 MLE
by 冈崎梦美 @ 2018-04-08 23:32:43
@yyfcpp 这么强的么……可是我是在本地跑的样例啊……
by 冈崎梦美 @ 2018-04-08 23:36:31
把maxn缩小到50001之后还是不行啊……样例都RE
by Anguei @ 2018-04-08 23:41:52
@LGW2016B02 读入优化那里的 ch 没初始化?
by Anguei @ 2018-04-08 23:50:06
@LGW2016B02 貌似是 query 的时候进行 pushdown 越界了
by Anguei @ 2018-04-08 23:52:42
@LGW2016B02
调试信息:
- tree[p*2] {l=??? r=??? val=??? ...} node
l <无法读取内存>
r <无法读取内存>
val <无法读取内存>
lazy <无法读取内存>
by AThousandSuns @ 2018-04-09 10:07:36
有时候MLE算到RE
by 冈崎梦美 @ 2018-04-09 18:04:42
@yyfcpp 这题怕是有毒……谢谢您的帮助,我不打算用线段树写了,差分水过去吧……
by Anguei @ 2018-04-09 19:54:26
@AThousandSuns 理论上讲,这么写占用内存大概是 300MB,不至于 RE。
by Anguei @ 2018-04-09 19:54:54
@LGW2016B02 改天我用线段树写写试试吧