CF915F

发布时间 2024-01-11 08:36:13作者: C01et10n

Codeforces Round 915 F 题解


定义 \(f(u, v)\) 表示 \(u\)\(v\) 路径上的最大与最小点权之差,求:

\[\sum_{i=1}^{n}\sum_{j=i}^{n}f(i,j) \]


定义 \(\max(u,v)\)\(\min(u,v)\) 为路径最大最小点权,所求即:

\[\sum_{i=1}^{n}\sum_{j=i}^{n}\max(i,j)-\sum_{i=1}^{n}\sum_{j=i}^{n}\min(i,j) \]

考虑 \(a_i\) 对左边的和式的贡献,当且仅当其为某条路径 \(u\rightarrow v\) 上的最大值时,会产生贡献。

设边权 \(w_i\) 为端点点权较大值。

那么对 \(w_i\) 升序排序,逐次连边,那么我连接 \(u_i\)\(v_i\) 之前,图中必然只包含边权更小的边,此时边 \(i\) 的加入必然会造成 \(w_i\times siz_{u_i}\times siz_{v_i}\) 的贡献。因为有这么多条边穿过了 \(i\),而 \(w_i\) 就是其上的最大值。

这实际上已经去重了,边权相同的边先后加入,这时路径上的多个最大值只会在后加入的最大值上算一个。

Submission