好像数据有点弱(?
查看原帖
好像数据有点弱(?
564732
TimSwn090306楼主2023/8/27 12:37

本来这题 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

(探头

2023/8/27 12:37
加载中...