搜索
双向宽搜
题目
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不一定知道,因为可能会出现同时满足条件的数对
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号