Gravatar
hsl_beat
积分:294
提交:47 / 76

Pro4421  [ICPC2026河南省赛]收益

写题解纪念我们差点得到的金牌。

首先要发现怎么选才是最优的,显然深度靠下的点先走,让它走到一个自己能获得权值最大的叶子。

所以现在的问题就是对于一个点,该怎么快速求出它上面的那几个人能获得的最大权值。发现每次都是走到一个叶子,所以我们大概思路就是可以在每个点记录一下可能的路径数量,然后取前几个最优的(可以用set),并把剩下的丢进父亲节点的路径里,然后父亲再取,父亲合并儿子的路径的时候可以直接启发式合并,时间复杂度就是对的。

问题在于这样直接做可能两条优的路径里面有一些重叠的,答案就会大。解决方案其实也很简单,我们既然要避免一个点被算多次,那么就可以在算路径的时候只把自己的权值放进去一次,那么直接放进最优的路径就好。

然后随便写就过了,不开加速好像会超时。


2026-05-27 14:56:43    
我有话要说
暂无人分享评论!