好像数据有点弱(?

P2801 教主的魔法

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祭


|