【数据】数据有水

P2801 教主的魔法

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 其实已经改完了


|