CF1090F How to Learn You Score

CF1090F How to Learn You Score

codeforces:CF1090F How to Learn You Score

Solution

一道有趣的交互 + 构造。2600*。

观察 \(n \ge 5\),我们不妨对 \(5\) 个数的情况进行分析。

如果知道 \(5\) 个数的和,再减去另外 \(4\) 个,就可以得到单个数的值。

那么不妨先来考虑四个数的和。

假设排序之后的四个数分别为 \(a, b, c, d\)

对这个四元组进行询问的方式有四种:\((a, b, c), (a, b, d), (a,c, d), (b, c, d)\),分别对应查询结果 \(a + c, a + d, a + d, b + d\)

发现查询结果中 \(a + c \le a + d \le b + d\),且 \((a + c) + (b + d)\) 恰能询问出四个数的和。

五个数的和,只需求五遍四元组的和再除以 \(5\) 即可,这样在 \(10\) 次就能搞定原本需要 \(20\) 次的工作。

对于 \(n > 5\) 的情况,想到用四元组的和减掉已知的三个数,随便拿前 \(5\) 个数中的三个拿来凑就可以了。

code CF1090F

posted @ 2023-02-28 17:14  Schucking_Sattin  阅读(28)  评论(0)    收藏  举报