趣题,猜数字

来源:互联网 发布:JS PDF 拆分 编辑:程序博客网 时间:2024/05/16 18:09

 

Poi 2004 pin

题意:pin码是一个十六进制的有4个元素的数组。现在要你猜pin码,对于一个数组a[i],表示i通过转换后是a[i],现在你可以询问b,a,表示pin码经过a转换是否是b数组。询问次数不超过30次。

 

首先的想法是必需一个个考虑。先求出pin中有哪些数字,但是这个数字可能出现多次。这样的枚举量是受不了的。所以转化为哪些没出现过,也就是哪些改了无影响。16次。

确定了后,考虑只有1个数字只填在一个位置的枚举量较小,称其为匹配。

S2:根据可能数字集大小K别处理。

K={a}  Ans=aaaa

K={a,b,c,d}  询问类似((0,1,1,1),(0,1,1,1))以确定某个位置是不是某个数字。

K={a,b,c}  枚举,若发现某数字x无法匹配到某位置,那么先匹配另外两个,则剩下的两个位置均为x

K={a,b}  两种情况:abbbaabb。若某次匹配成功,则剩下的都是另一个数字,否则枚举C(4,2)来确定a即可。

需要次数最多的为aabb2*4+C(4,2)=14次。

 

 

完美解决。

 

 

 

原创粉丝点击