码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #618 (Div. 2)

时间:2020-02-10 20:58:46      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:math   区间   决定   n+1   枚举   丢失   函数   维护   https   

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\) 是一个递增序列,且字典序最小。

现在看来真的很裸,直接使用单调栈维护即可。

(比赛时咋没想出来呢)

记得用 \(\texttt{printf}\)。(血与泪的教训)

Codeforces Round #618 (Div. 2)

标签:math   区间   决定   n+1   枚举   丢失   函数   维护   https   

原文地址:https://www.cnblogs.com/HenryHuang-Never-Settle/p/CF618_div2.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!