其他分享
首页 > 其他分享> > Codeforces Round #812 (Div. 2)

Codeforces Round #812 (Div. 2)

作者:互联网

被交互提薄纱

A

显然答案就是经过最边缘的四个点组成的矩形的周长。

B

显然 \(f(a)_{\min} = \max\limits_{i=1}^n a_i\)。考虑达到这个下界的时候,数组的最小值一定在两端点,删去这个最小值,剩下的数组的最小值仍然一定在两端点。直接模拟就行。

C

每次找到最小的且 \(\ge n - 1\) 的完全平方数,记为 \(sq\),填上所有 \(i \in [sq - n + 1,n - 1]\) 的数,然后再递归。可以证明这种构造方法是正确的,并且原问题一定有解。

D

赛时一直在想六个人分一组,然后就寄了……

四个人分一组,考虑如何通过 一次询问 排除两个人。根据锦标赛的性质,四个人分一组,每组内第一个和第二个人一定有一个人胜局数量是 \(0\),第三个和第四个人一定有一个人是 \(0\),且若有出现次数 \(> 1\) 的数则 一定是 \(0\) 。记组内的四个人分别为 \(b_1,b_2,b_3,b_4\),且每个人胜局数量的数组为 \(a\),那么我们每次询问 \(b_1\) 和 \(b_3\):

这样就以总询问次数为 \(2^{n-1}\) 的方法解决了这道题,爆踩标算。

E

显然最终目标是让 \(a_{1,1}\) 尽量小,在 \(a_{1,1}\) 尽量小的前提下,贪心地使 \(a_{1,2}\) 尽量小,以此类推。

题中的操作不会改变对角线上的数,于是只用考虑非对角线上的数。

对于 \(i,j\ (i < j)\),可以发现能使 \(a_{i,j}\) 与 \(a_{j,i}\) 交换的 \(k\) 只有 \(k=i\) 或 \(k=j\)。考虑用 扩展域并查集 维护每个 \(k\) 是否执行操作,\(i\) 为不执行,\(i+n\) 为执行。那么每次枚举 \(i,j\):

枚举完就达到了使 \(a\) 字典序最小的目标。

标签:合并,人分,交换,Codeforces,排除,最小值,一定,812,Div
来源: https://www.cnblogs.com/zltzlt-blog/p/16558627.html