题解乱写

晚上脑子十分不清醒

 

 

于是还是写下题解吧。

 

模拟20  任

保证若连通任意两点只有一条简单路径,说白了就是森林 无环图。

假设一个连通块的节点数是n,由于它一定是树,所以边数为n-1。

然后我们可以归纳得出结论:连通块数=点数-边数。

很容易想到二维前缀和,分别维护点和边。

点很容易解决,小容斥即可。

边的话不好划分,对于这种界限不清的问题,可以规定。

我们规定一个点的边只考虑右和下。

这样我们可以得到任意一个边矩阵,对于矩阵右和下统计多的部分维护行和列的连边考虑即可。

 

 

最小生成树:

模拟23 water

一个点的水位高度是从这个点出发到达边界的所有(路径上的最大值)的最小值

换言之就是 找到一个路径使路径上的最大边权最小,求这个最小值。

我们来证明下:

设x是上面所求,h是这个点的水位高度

显然这个点只要有一个路径能够到达边界,那么不满足

假设h比x大,如果我们仍走这条路径,那么不满足,因为x是这条路上的最高点了,没有点可以挡住水流,(这条路)已经可以通到边界了。

      由于上面已经有一条路径不满足,h不可能大于x

假设h比x小,这条路径满足,其他路径上的最大权值一定大于等于x,那么其他路径同理满足。所以可以增大h。

综上h=x。

那么考虑如何求x。

其实这是一类问题。

对于最大值最小,最小值最大,很容易联想到二分,用二分卡住一维,然后把这一维当作已知条件去求解另一维,然后通过判断合法性来调整二分。

这个题也具有单调性,然而对每个块二分复杂度不允许。

我们需要一个整体的求解方法:

最小/大生成树

对每个块连边,边权为两个块的高度的较大值,边界为max(高度,0),然后跑Krus,根为边界,答案就是这个点到根的最大边权。

 最小生成树保证了每个点到边界的路径上的最大值尽可能小,然后找到这个最大值即可。

 

模拟24 Star Way To Heaven

解法一:一眼二分,不会验证,准确说是一想到实数就放弃了。。。

二分所以star的半径和边界的宽度,然后验证存不存在从左到右的通路。

实际上验证很简单。只要换种角度。

连通不好判,不联通还是可以的。

 

 

并查集,把所有有交集的圆放到一个集合,记录上下边界,边界特判,然后看存不存在一个集合的上下边界卡住m。复杂度O(k^2logm)

解法二:求最小距离的最大值。同上最小生成树!

用最小生成树描出边界,注意要break出去,因为到了边界还可以走回来。

那么这个树实际上是边界的最紧密连接情况,即从左到右必须要经过的所有最坏情况。

答案就是树上的最大边权/2

 

 

模拟18 可爱精灵宝贝

有点像watching firework is fun,那题是恰好某个时刻,那么这个时刻能产生贡献的点的位置是唯一的,可以按照时间排序,然后以每个烟花的收集为阶段转移。

这个题的作用是一段的,即每个时刻能产生贡献的点有很多,我们需要找出全局的最优解。

于是从性质入手,我从a到c,设b在路径上,那么我一定会尝试(失没失效)拿b,这样答案不会变差。

于是我们发现每次移动可以看成一个区间,那么区间内的点我都已经拿过。

突然发现这题写过。eee

 

 

在第一机房垫底了。。。

这几天状态极差,原因是什么不说了。总之不要太紧张就是了,一定要专注在题上。

这两次考试出现了很多以前我没出现过的智障错误,比如昨天交错程序,今天搜索写挂,T2打的时候太慌也没有手模然后没有*c。。。

还是心态出了问题啊,是我最近对自己期望太高了,放松下来,不要在越需要冷静的时候被一些琐碎至极的事情扰乱,千万不要放弃思考,思考才会使我的实力真正增强。

我说过我不想回隔壁,所以。。明天加油qwq

 我一定能做到的。

 

转载于:https://www.cnblogs.com/hzoi-yzh/p/11370469.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值