TimSwn090306 @ 2023-08-27 12:37:02
本来这题 AC 了,但是后来写另一道分块代码的时候突然想起来感觉这段代码锅了。
inline void upd(int l,int r,int k){
int nl=bel[l],nr=bel[r];
if (nl==nr){
for (int i=l;i<=r;i++){
a[id[i]]+=k;
sum[bel[i]]+=k;
}
return ;
}
if (l!=bl[nl]) nl++;
if (r!=br[nr]) nr--;
for (int i=nl;i<=nr;i++){
sum[i]+=k*(br[i]-bl[i]+1);
tag[i]+=k;
}
if (l!=bl[nl]){
for (int i=l;i<bl[nl];i++){
a[id[i]]+=k;
sum[bel[i]]+=k;
}
}
if (r!=br[nr]){
for (int i=r;i>br[nr];i--){
a[id[i]]+=k;
sum[bel[i]]+=k;
}
}
}
(自己口胡的分块可能看起来很奇怪
在我的代码里散块部分增加后大小顺序变了没有重新 sort,是一个很明显的错误((
比如这组数据我就过不去:
5 2
1 2 3 4 5
M 3 3 2
A 3 5 5
正确的答案(题解输出的也是对的):
2
我的输出:
3
也就是只要数据中有散块部分被增加,且增加后所属整块的大小顺序改变了,我的代码就会输出错误的答案。
但实际交了这题后可以 AC ,所以是不是数据有点弱?qwq
(探头
by SamHJD @ 2023-08-27 13:34:17
@kkksc03
by TimSwn090306 @ 2023-08-27 14:17:22
@SamHJD 我 被 骗 了
by TimSwn090306 @ 2023-08-27 19:25:58
@SamHJD 所以要不要艾特管理(不知所措(揣手手
by SamHJD @ 2023-08-27 19:50:28
@TimSwn090306 蜗觉得不可以总司令
by TimSwn090306 @ 2023-08-27 21:25:24
@SamHJD QAQ
(验证码accc祭