大家好,我使用随机化通过了这道题。
最大操作次数大概在 815275 左右。
虽然能过,但是偶尔经常会随机 RE 成 95分,而且是在不同的点,代码是一样的。比如这样或者这样。
我很好奇为什么。
以及是否能构造一组卡掉我的随机化算法的数据。
下面大致讲述一下算法流程。
首先,看到这题,大家第一眼都会一个 O(n2m) 的做法,写一下,发现有一个 2 的常数和一个 21 的常数,抵消掉了,能拿到 70 分的好成绩,后面几个点操作次数在 106 左右,感觉和答案就差一点。
所以我们就考虑卡卡常。
我们有的时候,是不需要把移动时借助的满栈复位的。
所以这就少了一半的操作次数。
但我们并不是总能不复位的,但是感觉是就能优化不少。
所以你写一下,惊讶的发现拿到了 95 分的好成绩,第 15 个点用了 828577 次。
但是你又发现,每次你复位颜色的顺序是和答案次数有关的,所以你把复位颜色的顺序 random_shuffle 一下,然后如果答案不合法,就再做一次。直到合法为止。
然后你就过了。代码在这里。
我主要是想确定,这个做法是否能被卡掉。
以及为什么会随机 RE。