重生之我是国家队员

前言

接下来的两个月我将退出综合,转入信息竞赛。

但是反方向的钟怎么还一个字都没有写,我要生气啦!!!

新年的 \(\text{QAQ}\)

\(\text{Part I}\)

考虑这样一个程序用于计算 a op b 的正确值:

x = a op b
y = a op b
z = x - y
if z goto 1

得益于运算错误时随机取值的范围很大,所以基本可以保证正确。

\(\text{Part II}\)

对于改之后的题,运算错误时的取值为正确答案异或 \(1\),且限制程序运行时执行的语句总数不超过 \(35000\)

这时上面的代码不能再保证正确,但相比于直接运算,正确率仍有提升。

所以考虑多来几遍,每次的 \(z\) 若不为 \(0\) 就回到开头重算:

x = a op b
y = a op b
z = x - y
if z goto 1
y = a op b
z = x - y
if z goto 1
...

但这样的语句数会过多,考虑每次 \(z\) 不为 \(0\) 不一定是 \(x\) 错了,也有可能是 \(y\) 错了,那么这时回到开头就很亏。

那么我们不从头开始,而是跳转到上一轮计算的开头即可。

这个过程可以抽象为一个随机游走的模型,经过计算,\(10\) 次左右的验证即可基本保证正确。

梦幻折纸

先考虑一维的情况。

从折纸的侧视图入手,发现在一开始相邻的两个格子之间一定存在一条折痕,而这条折痕要么在左边要么在右边。

每条折痕的方向在一开始的纸条上一定形如:左右左右左……

那么要判断最终能否折成 \(1\sim n\),可以先假设折出了这个形状,再判断同侧的折痕之间是否出现相交的情况即可,如果相交就说明不合法。

二维的情况是类似的,只不过折痕方向变成了四种。

判相交需要用树状数组,总复杂度 \(O(tnm\log_2{nm})\)

posted @ 2026-07-10 15:20  jr_zch  阅读(35)  评论(0)    收藏  举报