关于随机化
查看原帖
关于随机化
211086
bsTiat楼主2023/11/15 22:40

大家好,我使用随机化通过了这道题。

最大操作次数大概在 815275 左右。

虽然能过,但是偶尔经常会随机 RE 成 95分,而且是在不同的点,代码是一样的。比如这样或者这样。

我很好奇为什么。

以及是否能构造一组卡掉我的随机化算法的数据。

下面大致讲述一下算法流程。

首先,看到这题,大家第一眼都会一个 O(n2m) \mathcal{O}(n^2 m) 的做法,写一下,发现有一个 2 的常数和一个 12 \frac{1}{2} 的常数,抵消掉了,能拿到 70 分的好成绩,后面几个点操作次数在 10610^6 左右,感觉和答案就差一点。

所以我们就考虑卡卡常。

我们有的时候,是不需要把移动时借助的满栈复位的。

所以这就少了一半的操作次数。

但我们并不是总能不复位的,但是感觉是就能优化不少。

所以你写一下,惊讶的发现拿到了 95 分的好成绩,第 15 个点用了 828577 次。

但是你又发现,每次你复位颜色的顺序是和答案次数有关的,所以你把复位颜色的顺序 random_shuffle 一下,然后如果答案不合法,就再做一次。直到合法为止。

然后你就过了。代码在这里。

我主要是想确定,这个做法是否能被卡掉。

以及为什么会随机 RE。

2023/11/15 22:40
加载中...