专栏文章

题解:P12797 [NERC 2022] Hot and Cold

P12797题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@min3epwp
此快照首次捕获于
2025/12/01 19:55
3 个月前
此快照最后确认于
2025/12/01 19:55
3 个月前
查看原文

思路

神秘方言题。
显然是二进制拆分的思路。题目要求 6464 次询问出结果。那么由于范围最大达 10610^6,则每次询问通过 3×log(106)3×20=603 \times \log(10^6)\approx3 \times 20=60 可知只能询问 33 次。所以剩下有 44 次机会来确定方言
我们询问 33 次问出词义,通过询问 33 次分别为 (0,0)(0,0)(1,1)(1,1)(0,0)(0,0),确定 (1,1)(1,1)(0,0)(0,0) 离目标点的关系。
若已经找到,则停止。该步骤之后每次询问之后都要加,不再赘述。
若没找到,即结尾不是感叹号,则如果两次字符串结果相同,则答案一定在 (1,0)(1,0)(0,1)(0,1) 之间,直接询问即可。
否则我们知道答案一定不是 (1,0)(1,0)(0,1)(0,1),则 (1,1)(1,1) 询问的结果一定是更近(0,0)(0,0) 询问的结果一定是更远
所以 33 次可以确定词义。
接下来,每次缩小范围只能询问 33 次,如果可以询问 44 次可能这题就是个绿。我们把 xxyy 的操作一起算,就可以减掉分开算的多余操作。
询问当前范围中心点,在询问中心点上面一个点(相距 11 单位长度),然后在询问中心点右上角的那个点,可以确定下来目标点在中心点哪个方向。即:
记此时的范围是 (lx,ly)(lx,ly)(rx,ry)(rx,ry),则定义 midx=lx+rx2,miny=ly+ry2midx=\frac{lx+rx}{2},miny=\frac{ly+ry}{2}(midx,midy)(midx,midy) 即为中心点。再询问 (midx,midy+1)(midx,midy+1),可以确定目标点在中心点的上面还是下面。我们假设是在上面,下面同理。然后询问 (midx+1,midy+1)(midx+1,midy+1),则可以确定目标点是在中心点上方的左边还是右边。
所以 33 次操作可以把 xxyy 均砍一半,则总的询问次数为 3×log(106)3×20=603 \times \log(10^6)\approx3 \times 20=60,加上确定词义的 33 次,共 6363 次,可以通过。

评论

0 条评论,欢迎与作者交流。

正在加载评论...