Codeforces Round #618 (Div. 2)
Posted henryhuang-never-settle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #618 (Div. 2)相关的知识,希望对你有一定的参考价值。
Codeforces Round #618 (Div. 2)
这一场偏简单,我终于可以补完题了
代码就不放了。
CF1300A Non-zero
题目大意:给你 (n) 个数,每次可以对任意一个数 (+1),求最少需要多少次操作使得最后所有数的和与积均不为 (0)。
将所有 (0) 全部加 (1) 后判断和是否为零即可。
CF1300B Assigning to Classes
题目大意:给你 (2n) 个数,将它们分成两组,且每组必须有奇数个,使得分组后两组的中位数之差最小,并输出差值。
首先将数列排序。
考虑让每个数作为其中一组的中位数,容易发现若要使差值最小,则中位数两边的数一定可以在两组中随意调换而不影响中位数(反证法易得)。所以我们枚举每个数,使其单独成组,另一组直接求得即可。
由此可以推出最终答案即为 (a_{n+1}-a_{n})。
时间复杂度为 (O(nlog_2n)),即排序复杂度。
CF1299A Assigning to Classes
div1A自闭日常。。。
题目大意:定义函数 (f(x,y)=(x|y)-y),给定数列 ({a_n}),决定每个数的位置,使得 (f(f(a_1,a_2),a_3)...a_n)) 的值最大。
首先可以比较轻松的得到 (f(x,y)=x&(sim y))。
那么我们可以将最后的答案写成 (a_1&(sim a_2)&(sim a_3)&...&(sim a_n))。那么我们发现,最终答案只与(a_1)有关。
所以我们可以枚举每个数作为 (a_1),记录取反后前缀或、后缀或,就可以在 (O(n)) 的时间复杂度内解决问题。
CF1299B Aerodynamic
大型猜结论现场
题目大意:给定一个凸多边形,判断其所有平移后点 ((0,0)) 在其内部的所有图形的并是否与原图形相似。
有偶数点的中心对称的凸多边形满足条件。感性证明选手
通过向量可以在不丢失精度的情况下判断。
CF1299C Water Balance
题目大意:给定一个数列 (a_n),每次你可以将一段区间赋值为其区间内数的平均数,使得最后 (a_n) 是一个递增序列,且字典序最小。
现在看来真的很裸,直接使用单调栈维护即可。
(比赛时咋没想出来呢)
记得用 ( exttt{printf})。(血与泪的教训)
以上是关于Codeforces Round #618 (Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章
Codeforces Round #618 (Div. 2)
Codeforces Round #618 (Div. 2)
Codeforces Round #618 (Div. 2)
Codeforces Round #618 (Div. 2)题解