模拟45 题解

A. kill

显然本题可以二分答案。

于是问题转化为判断一个距离是否可行。

将人和怪物分别按位置排序,

那么每个人选择范围内可以选择的最靠左的怪物,不会使答案更差。

单调指针扫一遍就可以了。

 

 

 

B. beauty

统计每条边儿子方向上的关键点数量,设为$cnt[i]$,

那么另一个方向上的关键点数量为$2k-cnt[i]$,

$ans=\sum \limits_{i=1}^{n-1}min(cnt[i],2k-cnt[i])$

显然答案不会大于这个值,因为跨过每一条边的路径数不会超过这个答案。

构造出一个方案是可行的。

 

 

 

C. weight

考场上想的是:

不考虑每一条边,形成一棵最小生成树。

如果不能形成,则答案为-1。

否则,答案为加上这条边形成的简单环中,边权最大值-1(不包含这条边)。

是正确的,然而没有办法维护这棵要求加边/删边的最小生成树。

 

正解是类似的:

先求出最小生成树,

那么,对于最小生成树上的非树边,答案为加上这条边,形成简单环边权最大值-1,

对于树边,如果这个权值可以被其它的一些边替换,那么就应该降低权值。

所以对于每一条非树边,使一条链上的权值对该边的权值取min。

所以该题是lct模板题,直接码就完了。

posted @ 2019-09-18 17:46  skyh  阅读(147)  评论(0编辑  收藏  举报