搜索

双向宽搜

题目

P4459 [BJOI2018] 双人猜数游戏

思维性较强的题目

假设我们想知道Alice当前是否知道了数值,设\(f_{i,j,k}\)为数\(j,k\)在第\(i\)轮的人是否知道,那么有几种知道方向(对于Alice):

1、自己前面就知道了,即\(f_{i-2,j,k}=1\)

2、自己可以从前一轮Bob的回答中知道,即枚举所有乘积等于\(j*k\)的数对,只存在一组数对满足对方的回答,那么Alice就知道了该数对,\(\forall j*k=m,(j,k)!=(x,y),f_{i-1,j,k}=1,f_{i-1,x,y}=0\)

然后直接搜出答案即可,经测试答案不会超过\(300\),随便搜

p.s. 注意,当Alice知道结果时,Boob不一定知道,因为可能会出现同时满足条件的数对

posted @ 2024-10-31 17:25  Zhone_lb  阅读(9)  评论(0)    收藏  举报