Processing math: 0%

交互题乱做

感觉自己智商太低,来做交互题。

36th Petrozavodsk Programming Camp Day 8 A

有一个 n\times n 的正方形,左下角 (0,0),右上角 (n,n)。正方形里(含边界)的某整点上有一只机器人。
你可以每次给出一个严格在正方形外的点 (x,y),会返回 (x,y) 和机器人的直线距离的平方。每次询问后由机器人任选上下左右的一个方向移动 1
确定机器人的初始位置。
n=100,询问点与正方形的切比雪夫距离不超过 1000,询问次数不超过 4

题解:
其实问两次就够了。

  1. (2n+1,n),然后枚举正方形内所有点,标记出符合条件的;
  2. (n+1,-1),然后枚举正方形内所有点,找出符合这次的条件且四周有标记的。

容易证明这样可以找出唯一点。

2021-03-18 省选模拟赛 B

通信题,Alice 将对 Bob 进行若干次询问。
每次 Alice 想好两个不超过 n 且互不相同的正整数 x,y,从 x,y 中选一个数 z (z=xz=y) 给 Bob,并告诉 Bob 一个正整数 k
每次 Bob 得到 zk 后,要确定 z=x 还是 z=y
帮助 Alice 决定每次的正整数 k,帮助 Bob 根据询问的 kz 确定 z=x 还是 z=y
n=920,要求 1\le k\le 12

题解:
考虑 Bob 是拿到 z,并且根据获得的 k 给出 01,即构造函数 f(z,k)=0/1
注意到所有的数是等价的,所以猜想对于一个 z,使 f(z,k)=0f(z,k)=1k 的个数可能要一样多。
由于对于任意数对 (x,y),都要存在一个 k ,使得 f(x,k)\ne f(y,k),不然无法分辨这对 xy

于是我们想到这样一个做法:
对每个 z,构造一个 12 位 01 串,其中 6 位是 0,6 位是 1,且不同的 z 对应不同的 01 串。
注意到这样的 01 串有 \binom{12}6=924 个,可以通过。

LOJ 2841

已知桌面上有 n 本书从左往右排成一排,编号为 1 \sim n
图书管理员每次可以取走连续的若干本书。你每次可以向交互库询问一个编号集合 S ,交互库会返回图书管理员最少多少次把所有编号在 S 中的书取走。
要求通过询问得出这 n 本书编号的顺序,由于左右顺序无法通过询问得出,只要得到从左往右或从右往左依次的编号即可。
n \le 1000,询问次数限制 20000

我们设相邻的书有连边。
对于 u\notin S,通过询问 SS\cup{u} 可以得到 u 有多少条边连到 S 内。
可以先通过 n 次询问问出链的一端的编号,然后考虑每次怎么问出下一个点。
二分。假设我们已经知道下一个点在 [l,r] 中,\lfloor\frac{l+r}2\rfloor=m,那么我们可以用上面的方法两次问出,u 除了已经确定的边以外,有多少条边连到 [l,m] 里。因此二分可行。
问出每个点的下一个点就问出了一个顺序,询问次数 O(n\log n)
但是这样的话询问次数应该会超一点,考虑有些区间被询问了多次,把它记忆化下来就好了。
n=1 要判一下。

2021-05-07 NOI 模拟赛 C

d 维空间有一个点,这个点的每维坐标都是 [0,r] 内的整数。你要通过询问找出这个点。
你每次可以询问一个点,要求询问点的每维坐标也都是 [0,r] 内的整数。返回一个 bool 值表示 询问点到所求点的切比雪夫距离是否小于上一次的距离。
d\le 500,r\le 10^9,询问次数不超过 50000

假设答案每维坐标都大于 0,那么令初始点为 R=(1,1,\cdots,1),然后逐步往大调整得到答案。

注意到切比雪夫距离为每一维坐标差绝对值的最大值,如果我们知道哪几维取到了这个最大值,那么这几维就是影响答案的。我们尝试把这几维坐标增大一些(也就是使这几维坐标差绝对值减小),看看增大多少后会出现新的最大值维度。
重复 O(d) 次后所有维度坐标差绝对值就相等了,可以轻松得到答案。

怎么找出哪几维取到了最大值?整体二分。

而对于答案某维坐标恰为 0 的情况。最后调整即可。

询问次数 O(d\log d+d\log r)

posted on   Dreamunk  阅读(206)  评论(0编辑  收藏  举报

努力加载评论中...

导航

点击右上角即可分享
微信分享提示