Description
有 n 个点,每个点有个权值 p1, p2,…,pn。这些点之间两两有边,对于点 i, j,这两个点之间的边权为
问把这些点连通的最小代价和是多少,也就是问这个完全图的最小生成树的边权和。
Solution
对于生成图,一看数据n方过百万,就知道要用玄妙的方法来构成边去跑克鲁斯卡尔了
观察边权的表达式,可以知道存在多余的权值相等的点是无意义的(连接耗费为零),所以可以先去重
再一次观察发现对于mod k的答案,在每一个段(段长k)中是有序的。即
所以根据此加边即可
Code
1 |
|