2022CCPC预选赛C Guess(博弈)

两个人头顶有一个数,互相猜对面是什么数。谁先猜出来谁赢,头顶的数一定是正整数,且一个人的数另一个人的两倍。

首先,如果某个人是奇数,那么另一个人一定可以推出自己的数字,就是那个人的两倍。

( 1 2 ) : 1 1 ( 2 1 ) : 1 0 (1\quad2) : 1\quad1 \\ (2\quad1) : 1\quad0 (12):11(21):10
接下来,如果两人头顶的数字是 ( 4 2 ) (4\quad2) (42)。①那么A会先说“不知道”,因为他不能确定自己头顶是 1 1 1还是 4 4 4。②既然A说“不知道”,那B就可以推知自己上不是奇数。看到A是 4 4 4,还是不能确定自己是 2 2 2还是 8 8 8。③轮到A,A接受到B的“不知道”信息后,便可以知道B看到自己头上不是一个奇数(如果A头上是奇数,那B是可以知道自己是多少的),那在 1 1 1 4 4 4中除去了 1 1 1,A就可以知道自己是 4 4 4了。综上,A在第二轮获胜。

再有如果,A头顶是2,B头顶是4。①A是无法确定的,自己可能为2或8。②轮到B,B本来的可能有1或4。A说“不知道”,那B头上一定不是奇数,现在就是有4是可能的了。综上B在第一轮获胜。
( 4 2 ) : 2 0 ( 2 4 ) : 1 1 (4\quad2) : 2\quad0 \\ (2\quad4) : 1\quad1 (42):20(24):11

继续理清这个问题,如果是 ( 8 4 ) (8\quad4) (84)。①首先A只能知道自己是 2 2 2 8 8 8。②B可以是 4 4 4或者 16 16 16,它也不知道。③A从B的“不知道”中可以推出,自己头顶上不可能是2。因为如果它头顶上是 2 2 2(B知道自己要么1要么4),而第一轮时A说“不知道”(说明B不是一个奇数),B就足够猜出自己是 4 4 4了(在 1 1 1 4 4 4中排除了 1 1 1)。既然B没有猜出来,那A它就不是 2 2 2,而是 8 8 8。综上,A在第二轮获胜。

仔细思考刚刚这个问题会发现,出现了嵌套的问题了。A看到B头顶是4,它便可以知道自己是 2 2 2记为 ( 2 4 ) (2\quad4) (24)或者8记为 ( 8 4 ) (8\quad4) (84)。然后B说不知道。第二轮时,由于如果是情况 ( 2 4 ) (2\quad4) (24),那B在第一轮就应该知道自己是多少了,然而他并不知道,所以只能是情况 ( 8 4 ) (8\quad4) (84)

类似地,如果是情况 ( 8 16 ) (8\quad16) (816),A在第二轮的时候并不能得出什么有用结论。而B在此时正在纠结是 ( 8 4 ) (8\quad4) (84)还是 ( 8 16 ) (8\quad16) (816),由于A此时不知道,所以排除掉 ( 8 4 ) (8\quad4) (84),他就可以知道是 ( 8 16 ) (8\quad16) (816)

所以得出了一条链的答案
( 2 1 ) : 1 0 ( 2 4 ) : 1 1 ( 8 4 ) : 2 0 ( 8 16 ) : 2 1 ( 32 16 ) : 3 0 ( 32 64 ) : 3 1 ⋯ :    ⋯ (2\quad1) : 1\quad0 \\ (2\quad4) : 1\quad1 \\ (8\quad4) : 2\quad0 \\ (8\quad16) : 2\quad1 \\ (32\quad16) : 3\quad0 \\ (32\quad64) : 3\quad1 \\ \cdots\qquad:\ \ \cdots (21):10(24):11(84):20(816):21(3216):30(3264):31:  

这样其实就已经可以开始模拟了。

另外一条链也是类似的。

然后可以模拟这个过程 O ( log ⁡ a ) \mathcal{O}(\log a) O(loga),也可以推一下式子再做。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值