ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Codeforces Round #812 (Div. 2)

2022-08-07 11:02:58  阅读:134  来源: 互联网

标签:合并 人分 交换 Codeforces 排除 最小值 一定 812 Div


被交互提薄纱

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\):

  • 若 \(b_1 > b_3\),可以发现 \(a_{b_2}\) 一定是 \(0\),此时可以排除掉 \(b_2,b_3\)。
  • 若 \(b_1 = b_3\),那么 \(b_1 = b_3 = 0\),此时可以排除掉 \(b_1,b_3\)。
  • 若 \(b_1 < b_3\),可以发现 \(a_{b_4}\) 一定是 \(0\),此时可以排除掉 \(b_1,b_4\)。

这样就以总询问次数为 \(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_{i,j} < a_{j,i}\),则最理想的情况就是 \(a_{i,j}\) 与 \(a_{j,i}\) 不交换或交换两次,即并查集中 \(i+n\) 和 \(j\) 当前不在同一连通块内 。如果是这样,则不交换,然后合并 \(i,j\) 且合并 \(i+n,j+n\);否则说明要使前面的字典序达到最小就必须交换 \(a_{i,j}\) 和 \(a_{j,i}\),此时就交换。
  • 若 \(a_{i,j} > a_{j,i}\),则最理想的状况就是 \(a_{i,j}\) 与 \(a_{j,i}\) 交换一次,即并查集中 \(i\) 和 \(j\) 当前不在同一连通块内。如果是这样,则交换,然后合并 \(i,j+n\) 且合并 \(i+n,j\)。

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

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有