趣题,猜数字

 

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次。

 

 

完美解决。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值