ssoj4015: 永琳的竹林迷径(path)

时间限制: 2 Sec 内存限制: 512 MB O2
提交: 61 解决: 31
[提交][状态][博客][加入收藏]
题目描述
竹林可以看作是一个n 个点的树,每个边有一个边长wi,其中有k 个关键点,永琳需要破坏这些关键点才能走出竹林迷径。

然而永琳打算将这k 个点编号记录下来,然后随机排列,按这个随机的顺序走过k 个点,但是两点之间她只走最短路线。初始时永琳会施展一次魔法,将自己传送到选定的k 个点中随机后的第一个点。

现在永琳想知道,她走过路程的期望是多少,答案对998244353 取模。

注意,如果对期望不理解,题目最后有详细解释,请自行阅读。

输入
第一行一个数Case,表示测试点编号。(样例的编号表示其满足第Case 个测试点的性质)

下一行一个n,表示树的点数。

下面 n-1 行,每行三个数ui,vi,wi,表示一条边连接ui和vi,长度为wi。

下面一行一个数k,表示关键点数。

下面一行k 个数,表示k 个关键点的编号。

输出
一行一个数,表示答案(对998244353 取模)。

样例输入
1
3
1 2 1
1 3 2
3
1 2 3
样例输出
4
提示
数据范围

n,k<=1e6

题解:
考场思路:因为要统计的是路径的贡献值,故考虑每一对有序的点对(u,v)出现的概率为1/k,那么就是要统计所有有序点对的距离和,暴力枚举每一个根,暴力搜索整棵树,效率为O(N^2)。
考虑如何优化求的过程,因为是树上统计问题,故考虑树形dp,则i的每棵子树对答案的贡献贡献为它的所有关键点到子树根的长度和×其他子树关键点的个数,若i为关键点,再加上所有i子树的关键点到i的路径长度和,最后在加上子树本身的点对长度和即可。

猜你喜欢

转载自blog.csdn.net/sz_165394732/article/details/83591367