竞赛讨论区 > 牛客小白月赛 66 出题人题解
头像
yingluosanqian
发布于 2023-02-10 21:01 广东
+ 关注

牛客小白月赛 66 出题人题解

题解

A

a_1 为奇数,输出 0。

a_1 为偶数且 a_2\to a_n 存在小于 a_1 的奇数,输出 1。

否则输出 -1。

B

A<B,则 1 1 和 n n 中必有一个是答案。

A > B,则交换从高到低 AB 不同的那一位。

C

可以发现,最优解必然在 \{s=0,t=1\}\{s=10^9-1,t=10^9\}\{s=0,t=10^9\} 三组解中的一组,逐一验证取最优即可。

D

首先发现,如果要删除障碍物,一定是删除一段连续的障碍物最优。

还可以发现,当 x>\sqrt n 时,L-x^2 \lt 0,因此仅需要考虑 x\le \sqrt n

至此,可以暴力枚举所有的删除情况并取最优,第一层循环枚举所有障碍物,称当前枚举至第 i 个障碍物。

第二层再枚举它前面的第 x+1 个障碍物 j,然后删除它们之间的 x 个障碍物,并用 a_i-a_j-x^2 更新答案 。

还需要考虑边界,为此添加两个分别位于 0,n 的障碍物即可规避对边界的讨论。

E

考虑先构造一条 1\to n 的链,边权分别以 1\to n-1 分配。

那么对于 n 个点的完全图的情况,接下来一次考虑边 1\to 3,2\to 4, 3 \to 5...,对于边 u\to v,所分配给它的边权必须满足它大于等于链 u \to v 的边权和。

可以如下分配边权。(给出 n=5 的情况,邻接矩阵)

对于非完全图的情况,把大的边去掉即可。

F

可以发现,每次碰撞,都会使得胜利方的球的大小减小。因此,若玩家 i 想要获胜,最好的情况是让它参与最后一次碰撞即可。

问题转变为,对于每个 i ,将除了 a_i 以外的球碰撞合并为一个球,然后和 a_i 比大小。有一个贪心的结论是,对于一堆球要碰撞,每次取最大的两个球碰撞,这样最终得到的球的大小一定是最小的。基于此有了一个 n^2 的做法。

再观察其他性质,如果一个较小的球最终能获胜,那么一个较大的球最终一定也能获胜。因此,在此基础上二分,得到了一个 n\log n 的做法。

全部评论

(3) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐