100UA的错误点/楼下的hack思路
查看原帖
100UA的错误点/楼下的hack思路
262549
Fucious_Yin楼主2023/11/30 15:51

不少题解的做法是先把当前二分区间左边所有必要边连接上,并对于每个递归层记录一个当前未确定的边的数组(不妨设为cur[]cur[]),同时为了修改方便,会记录一个idid数组,id[i]id[i]代表输入顺序的第ii条边在cur[]cur[]中的下标为id[i]id[i]。但是被hack的题解之所以会被有自环的数据hack(详见楼下),是因为我们在去除无用边时一定会去掉自环的边,但是有一部分人由于习惯太差没有在叉掉无用边的时候顺便清空对应的id[]id[],导致如果下一个二分区间有修改这条无用边的操作时,会在删无用或找必须时,直接把另外一条在cur[]cur[]中的边权改为infinf或−inf-inf,导致下一次会可能把实际上有用的边删掉。

具体是楼下的hack

5 7 10
1 2 1
2 3 4
3 4 6
2 5 5
2 2 7
1 4 5
5 5 7
7 4
5 10
4 3
2 7
1 3
5 8
2 4
5 9
3 4
7 9

显然第5和第7是自环,如果你手动调试WA的代码,会发现在某次二分赋inf时把没有操作的第4条边(2,5,5)赋值成inf导致她被删掉,导致必须选上原不会选的(3,4,6)才能联通。原因就是那个id[]id[]没有清。

应该可以有没有自环但是边权很大的hack,但是我懒决定留机会给大家继续加强数据。

多测不清空,抱铃两行泪——呜呜呜呜呜

2023/11/30 15:51
加载中...