牛客小白月赛30 题解

黑白边

https://ac.nowcoder.com/acm/contest/9667/A

A

题目描述 黑白边

使得 n 个点,两两联通, 那么就是一棵树, 只需要 n - 1 条边就可以了。

由于要很少的白边, 贪心的思想, 先把所有的黑边加上, 然后再添加白边。

用并查集维护有效边的个数, 有效边即这个边连接了两个不同的联通块。

如果有效边的个数不是 n - 1, 输出-1, 否则输出有效边里面白边的个数。

B

题目描述 最好的宝石

线段树操作,区间最大值,多了一个询问,就是求最大价值的宝石有多少个。

这个只需要再线段树合并的时候手动判断就可以了。

C

题目描述 滑板上楼梯

每次跳三阶不能连续, 所以就是一阶,三阶交替的跳。

x = n / 4;

y = n % 4;

如果 y < 3 , 那么答案就是 2 * x + y, 因为最后是恰好跳上去。所以最后跳 y 次一阶就可以了。

否则 答案就是 2 * x + 1

D

题目描述 GCD

牛牛有一个集合 包含 所有的数, 现在他想让你找一个最小的数 , 使得在 中任意找一个子集 集合中的元素个数为 中都存在两个数 ,且 . 如果找不到满足题目条件的 ,就输出,否则输出 .

为求 的最大公约数。

当 n < 4 的时候, 找不到答案, 所以 输出 -1

当 n > 4 的时候,如果选取 n 以内所有的素数 还有 1, 那么找不到两个数x y, 使得他们的 gcd > 1, 然而在添一个数, 就可以满足题目的条件了。

​ 所以答案就是 n 以内所以素数的个数 + 2

E

题目描述 牛牛的加法

模拟就可以了, 注意不要有前导0

F

题目描述 石子合并

贪心的想,每次找最大的石子堆,让他和相邻的合并,然后小的石子堆就被移除了。 所以最大的石子堆会用 n - 1次, 非最大的石子堆会用一次,

x = , sum =

所以答案就是 x * (n-1) + sum - x

G

题目描述 滑板比赛

因我牛牛知道了牛妹的动作顺序,所以可以排序。

分别对 a 和 b 进行从小到大排序。 然后倒序遍历。用 a 数组的最大值A和 b 数组的最大值B进行比较。

如果 A 大, 代表 A 可以匹配 b 数组剩下的所有值, 贪心的想, 就匹配 b 中的最大值 B。 那么答案加一,AB匹配。进行下一次比较。

如果 B 大, 那么找 A 中最小的动作和 B 进行匹配, A 可以用来下一次的匹配。

H

题目描述 第 k 小

维护一个大根堆

大根堆的容量是 k,维护的是前 k 小的数。 剩下的元素扔了就行。

每次加一个元素的时候, 放到大根堆里面, 如果大根堆的元素个数大于 k, 就不断的弹出元素。

询问的时候去大根堆的堆顶就可以了,如果堆里面的元素不够 k, 输出 - 1.

I

题目描述 区间异或

有一个长度为 的数组 , 有 次询问, 每次询问给一个值 , 找出一个最短的区间, 使得这个区间的异或和 , 输出区间长度。如果找不到输出

由于 数组元素为 3000 左右, 所以可以 的预处理, 处理出来每个长度区间异或的最大值。

得到每个区间长度 的异或最大值。

然后从前往后取 max,得到一个非递减的数组。

每次询问在这个数组里面二分一个最小的位置, 且这个位置的值 大于等于 x。

J

题目描述 小游戏

有一个长度为 的数组 , 每一步能拿走一个数,比如拿第 个数, ,得到相应的分数 ,但拿掉这个 后, (如果有 存在) 就会变得不可拿(但是有 的话可以继续拿这个 )。求最大分数。

先处理出来每个数出现的多少次。

每个数的大小很小, 所以可以 dp,

代表取到 i 这个数的时候得到的最大分数。

全部评论
大佬,D题什么意思?题意都没有看懂。为什么6输出5而不是2
1 回复 分享
发布于 2020-12-06 11:40
%%%F题直接膜,厉害
点赞 回复 分享
发布于 2020-12-07 23:08
如果选择集合 1 2 3 5,这四个数,是不满足条件的,但是在加任意一个数就满足题目要求
点赞 回复 分享
发布于 2020-12-06 12:19

相关推荐

昨天 16:55
已编辑
美团_Saas_后端开发
今天周一休息,突发奇想写一篇阶段总结。如题,我已经去了一个和Java彻底毫无关联的行业。曾经我以为自己能在计算机行业发光发热,没想到刚入行一年多就当了逃兵。从最开始的热爱到现在一看到代码就厌恶,不知道自己经历了什么。所以我去干什么了?答案是:在成都当了租房销售。上班那会压力大了就念叨着去干租房中介,但是一直下不去这个决心,想着自己学了四年多的计算机知识,终究还是不甘心。终于在某一天准备八股文的时候,看着无数篇和工作内容关系不大的理论知识,那一刻下定决心,决定尝试一下销售行业,也算是给自己一个交代。后面阴差阳错的投了成都自如去当租房管家,没想到面试很顺利,在当天一百多个面试的人里面,我成为了为数不多通过的几个幸运儿之一。目前已经培训通过,正式入职,也开了单,有压力但是每天过得很开心,真心喜欢那种和人交流的感觉,哪怕是最后没有选择找我租房。说这些也是想告诉那些大三,大四正在找Java实习而焦虑的同学:你们现在还年轻,选择很多,容错率也很高,可以尽情去尝试自己喜欢的行业和工作。不用因为某一次的面试没通过或者简历石沉大海而焦虑,更不用因为身边人都在挤编程的独木桥就强迫自己跟风。也算是自己的碎碎念吧,也希望自己能在新的领域取得一点小成就。也祝牛油工作顺利!
沉淀小子:干啥都不丢人啊,生存是必须要的,销售很考验一个人综合素质能力的,好的销售人脉和资源可不比写字楼的白领差啊
点赞 评论 收藏
分享
评论
14
收藏
分享

创作者周榜

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