昨晚想到的神秘题目,发出来供大家探讨。
交互题。有 n 个不同的数 a1 到 an,你需要找到它们之中的最小值。你只能通过向交互库提问某两者之间的大小关系来获得信息。
你可以向交互库同时提交任意多对 (ai,bi),随后交互库会返回每一对 (xai,xbi) 之间的大小关系(顺序不会打乱)。第 m 次提交时,每提问一对大小关系需要 f(m) 的代价。
对于:
- f(m)=m
- f(m)=m2
- f(m)=2m−1
请找到一种方法尽可能减小总代价。
正常的扫一遍找最小值是不行的,每一次比较的两者需要前面所有比较的结果才能确定,因此必须一次一次提交,这会导致结果并不很优。在后两种中甚至比直接在第一轮提交所有数对更劣。
也可以讨论其他的非常数 f(m)。