Sooke @ 2018-01-20 10:19:22
第一个题解实际上是错误的,下面这个数据能将该题解卡掉:
6 2
4 3 6 5 2 1
M 4 6 2
A 2 6 6
正确输出应该是 2,而第一个题解输出 1。
原因在于该段代码:
for(int i=ll;i<=r[belong[ll]];i++){
a[i]+=w;b[i]+=w;
}
for(int i=l[belong[rr]];i<=rr;i++){
a[i]+=w;b[i]+=w;
}
a 数组存放原数列,b 数组存放应接分块给每个块所对应区间排升序后的数列,代码中直接对 b 数组加,因为 b 数组可能因为排过序位置不能和 a 数组吻合,直接加可能会加到别的数去,可见是错误的。
所以管理员麻烦一下?
@chen_zhe
@yjjr
by chen_zhe @ 2018-01-20 10:48:10
数据已加强
by Jianuo_Zhu @ 2018-03-05 22:34:05
@Sooke 已改,感谢,不过我说您hack掉别人代码后不跟别人说一句吗233
by SofanHe @ 2018-03-25 19:58:25
数据好像还有水
增加一组Hack数据
题解没有考虑整块的add值,所以跑这个数据是不对的
10 2
1 1 1 1 1 1 1 1 1 1
M 1 10 999
A 4 5 999
@yjjr @chen_zhe @Jianuo_Zhu 顺便艾特一下被hack的人
by Jianuo_Zhu @ 2018-03-25 21:55:37
@多功能的荀彧 已改,多谢了
@chen_zhe 麻烦啦假数据害人啊
by SofanHe @ 2018-03-26 06:51:53
@Jianuo_Zhu 其实已经改完了