消耗战

虚树这个东西看OI wiki就好了,虽然我并不是很会证明正确性

当建立虚树之后,祖孙关系是不会改变的,然后虚树上某两个点之间的路径,就相当于原图中这两个点之间的路径,只不过相当于被压缩了(相当于跳着走的)

这道题目我们令虚树上的边的边权为原图中两点之间路径所有边权的最小值

证明一下正确性:

对于虚树中任何一条边\((u,v)\)的两个端点\(u\)\(v\),在原图中这两个点之间的路径不可能选出两个边及以上,因为删除至一条边后,反映到了虚树上,\((u,v)\)这条边还是会被选择,所以还是会被租个,而代价却变小了;同时对于原图的任何一种选择,都可以反映到虚树上,所以对原图DP相当于与虚树DP

另外提一嘴,这题的代码,最后清空的时候本来应该写ans[h[j+1]]=0,但是我最开始写成了ans[j]=0,导致多调了几大个小时,半夜了都还在调。。。一定要吸取教训啊

posted @ 2024-02-20 07:20  最爱丁珰  阅读(1)  评论(0编辑  收藏  举报