CF2096G Wonderful Guessing Game 构造

题解

首先考虑没有 ??? 回答的时候,答案是多少。

猜猜需要多少个询问。

⌈log⁡2n⌉?⌈log⁡3n⌉?\lceil \log_2n\rceil ? \lceil \log_3n\rceil ?log2n⌉?log3n⌉?

可以构造一个表,行表示不同的询问,列表示不同的元素,每个格子表示该元素如果是答案,在这个询问下应该有的回答。

例如:

在这里插入图片描述
假如我们令 RRR 为 1 , LLL−1-11NNN 为 0 .

那么我们实际上要往这个表中填入三种数字,使得任意两列不完全相同,而且每行的和为 000

怎么构造?

每次选出 (x1,x2,...,xk)(x_1,x_2,...,x_k)(x1,x2,...,xk) 时,将 (−x1,−x2,...,−xk)(-x_1,-x_2,...,-x_k)(x1,x2,...,xk) 也加入其中即可,其中 kkk 为行数。

注意 (0,0,...,0)(0,0,...,0)(0,0,...,0) 比较特殊,而且要保证不能有重复选择的 kkk 元组。

这个也比较简单,保证每个枚举元组的前缀 0 后第一个元素是 1 即可。

可是现在要选择一个询问进行忽视。

那么说明我们构造的这个表格有一行会直接被标为空,相当于对于任意两列,都有至少两个位置不相同。

显然我们需要一定要增加一个询问,证明可以通过信息熵的角度来证明。

如何构造?

也就是我们要加一次询问(一行),尝试让原来两列相差恰好一个元素的变成相差两个元素。一个非常直观的想法就是在每一列的最后都加上该列模三意义下的和。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值