题解 | 牛客练习赛 114 题解 #牛客练习赛114#
牛客练习赛 114 题解
感谢大家参与 牛客练习赛 114 !
A. 光速签到
标签
模拟
思路
将序列降序排序后,如果末尾数字是否为 则无解,否则输出排序后的序列即可。
B. 相信我,这真的是一个暴力!
标签
概率期望
思路
若 则无解,否则输出
即可。
C. Kevin的七彩旗
标签
dp、暴力
思路
考虑 dp。
考虑处理序列 的连通块,假设某段连通块为
,则该连通块应该满足:
。
- 若
,则必须满足
。
- 若
,则必须满足
。
- 若
,则必须满足
。
不难发现,每个元素最多属于 个连通块,部分元素可能不属于任何连通块。
令 为拼成美丽序列前
项,最少需要选出的互不相交的子段的数量。
仅当 是某个连通块的右端点时,
才有意义。
转移有:
答案 。
其中, 是在所有以数字
结尾的连通块中,最长的连通块的长度。
时间复杂度 。
D. 长途的春天
标签
贪心
思路
考虑对原牌堆进行排序,计算每个牌号 的数量
,从小到大去贪心的组成顺子,策略如下:
我们每次遍历时,我们要维护以牌号
为结尾的顺子长度,为了能凑出来顺子,我们每张牌号
前面都会接一个顺子。
- 如果牌号
的数量大于等于牌号
的数量,那么每张牌号
的牌都可以接上前面所维护的顺子,如果多出来就自己作为顺子的开头。
- 如果牌号
的数量小于牌号
的数量,应当优先选择长度较短的顺子,然后接上这个顺子,那么多出来的
前缀应当判断是否合法(组成顺子)。
按顺序进行判断是否合法即可。
E. Kevin的抽奖黑幕
标签
dp、概率期望
思路
不难发现,对于参与抽奖的每个人可以单独计算贡献。
考虑 dp。
用 表示当前是第
轮,此人连续
轮没有获奖,此状态到
轮抽奖结束,获得奖品数量的期望。
转移有:
答案 。
PS:这里 的做法可以通过本题,但不难发现,上面的转移方程经过归纳整理,可以进一步降低复杂度,感兴趣的读者可以进一步思考。
F. Kevin去砍树
标签
双指针、二分
思路
不难发现,被砍伐的树的高度有下面的特点:
- 呈现单调或单峰的形态;
- 没有重复的高度。
上面的两条性质,在区间上都有着随右端点右移,左端点单调的特点。
对于每个位置 ,使用双指针预处理出它能取到的最左边的
,满足
无重复元素,记
。
预处理出对于每个位置 ,预处理出它能取到的最左边的
,满足
,可以用 dp 或者二分实现,记
。
预处理序列 的前缀和,对于每个位置
,求出
,答案取最大值即可。
G. 图上异或难题
标签
线性基
思路
注意异或的性质。
对于图上一个点 而言,如果与
有连边的
的颜色和
不同,那么可以将这条边的边权的贡献算入答案。
考虑将边的贡献转化为点的贡献。
设与第 个点相连的所有边的边权异或为
,所有
组成的集合为
,那么答案为
。
使用线性基维护即可。