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)题解

Codeforces Round #618 (Div. 2)题解

Codeforces Round #618 (div 1)做题记录