婚礼现场系列
T1 $gragh$
为了方便把边的贡献下放到点,跑一个生成树作为划分依据。
T2 $permutation$
由于在本题中,构造的变换方法保证只能邻项交换
所以如果位置串字典序变小,权值串字典序也必然变小
但是此结论不适合所有情况。
考虑将读入的权值串转化成位置串
题目变成了:邻项且权值之差绝对值大于k可以交换,求最后字典序最小串。
一些情况下由于绝对值的限制,串中的两个数永远不能交换,这样的数有好多对。
考虑拓扑+建边优化,只向离这个点后边且离它最近的 不能交换的点 建边,表示这两个点的相对位置永远不能交换(也就是目前这个点表示的位置上的权值永远小于被指向的点)
最后堆优化拓扑排序,贪心给小权值分配小位置,得到的就是答案。
有点绕。
T3 $tree$
年度最滑稽题
考虑把边排序,从大到小插入边
那么插入这条边后,它连接的两个点显然必须在排列中相邻
如果不相邻的话那就会经过一些权值更小的边,本次贡献必然变小
但是它们相邻的话,由于到下一个点必然经过比这条权值更小的边,之后的贡献不会变小
然后两个点由于相邻了,就可以视作一个点(闭包?)了
通俗地说,就是在较大边权的边形成的联通块里你可以乱走,反正最小值一定在跨出去的最后一步上取,从最大权边贪心取最大值,答案就等于边权的和
又因为树联通所有的边都是必经边,所有边权和这个答案显然无法更优了
于是把读进来的边权加在一起,输出出去。