【题解】[COCI2020-2021#2] Sjekira

找规律。暂时没有严谨的做法。

根据定义,每次删除一条边,代价是两个连通块的最大值的和。所以最优决策是,每次找到一个代价最大的点 v a l m a x val_{max} valmax,然后 按某种顺序 删除它所连接的所有边,然后递归到它们所形成的新的子树中。感性的理解是,我们要最早把代价最大的点删掉

算一下一共是 2 ( n − 1 ) 2(n-1) 2(n1) 个节点,大胆猜测结论:

s u m = ∑ i = 1 n a i + ∑ ( u , v ) ∈ E m a x ( a u , a v ) − m a x ( a i ) sum=\sum_{i=1}^n a_i+\sum_{(u,v)\in E} max(a_u,a_v)-max(a_i) sum=i=1nai+(u,v)Emax(au,av)max(ai)

于是就搞完了。证明的话,你考虑转化为合并节点,第一次合并的时候代价就是 a i a_i ai ,如果 a i > a j a_i>a_j ai>aj 就要再操作一次 a i a_i ai,所以边加的就是两个端点的最大值(作为新的连通块的最大代价的点对答案产生贡献),但是发现还差一项,添一个 m a x ( a i ) max(a_i) max(ai) 即可(这个应该是可以用贪心证明的吧,雾)。


__EOF__

本文作者仰望星空的蚂蚁
本文链接https://www.cnblogs.com/cqbzly/p/17530280.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   仰望星空的蚂蚁  阅读(14)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示