牛客小白月赛 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 的做法。

全部评论
D题可以用三分法过 https://ac.nowcoder.com/acm/contest/view-submission?submissionId=60911253
点赞 回复 分享
发布于 2023-02-17 19:38 四川
月赛去哪里报名?
点赞 回复 分享
发布于 2023-02-12 16:51 河北
这题目有点意思的
点赞 回复 分享
发布于 2023-02-12 16:09 上海

相关推荐

Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
点赞
7
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务