交互题乱做

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

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=x\)\(z=y\)) 给 Bob,并告诉 Bob 一个正整数 \(k\)
每次 Bob 得到 \(z\)\(k\) 后,要确定 \(z=x\) 还是 \(z=y\)
帮助 Alice 决定每次的正整数 \(k\),帮助 Bob 根据询问的 \(k\)\(z\) 确定 \(z=x\) 还是 \(z=y\)
\(n=920\),要求 \(1\le k\le 12\)

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

于是我们想到这样一个做法:
对每个 \(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\),通过询问 \(S\)\(S\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 2021-02-21 10:16  Dreamunk  阅读(220)  评论(0)    收藏  举报

导航