码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj5250

时间:2018-11-24 18:55:53      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:set   pst   指令   大于等于   比较   树形背包   概率   连接   任务   

Access Globe 最近正在玩一款战略游戏。在游戏中,他操控的角色是一名C 国士 兵。他的任务就是服从指挥官的指令参加战斗,并在战斗中取胜。

C 国即将向D 国发动一场秘密袭击。作战计划是这样的:选择D 国的s 个城市, 派出C 国战绩最高的s 个士兵分别秘密潜入这些城市。每个城市都有一个危险程度d_idi?

C 国指挥官会派遣战绩最高的士兵潜入所选择的城市中危险程度最高的城市,派遣战绩第二高的士兵潜入所选择的城市中危险程度次高的城市,以此类推(即派遣战绩第i高的士兵潜入所选择城市中危险程度第i 高的城市)。D 国有n 个城市,n - 1 条双向道路连接着这些城市,使得这些城市两两之间都可以互相到达。为了任务执行顺利,C 国选出的s 个城市中,任意两个所选的城市,都可以不经过未被选择的城市互相到达。

Access Globe 操控的士兵的战绩是第k 高,他希望能估计出最终自己潜入的城市的 危险程度。Access Globe 假设C 国是以等概率选出任意满足条件的城市集合S ,他希望你帮他求出所有可能的城市集合中,Access Globe 操控的士兵潜入城市的危险程度之和。如果选择的城市不足k 个,那么Access Globe 不会被派出,这种情况下危险程度为0。

当然,你并不想帮他解决这个问题,你也不打算告诉他这个值除以998 244 353 的 余数,你只打算告诉他这个值除以64,123 的余数。

Solution

由于本人太弱不会正解,这篇题解是暴力做法。

首先做第一步转化,就是考虑每个点会被选择多少次,算出来之后求个和就行了。

为了方便处理(由于是暴力),我们枚举每个点,然后对这个点做一遍树形dp,就设dp[i][j]表示包含i的联通块且i为联通块中深度最小的点,子树中点权大于等于d[root]的点的个数为j的联通块个数。

转移就是我们平常写的那种树形背包。

然后我发现了一个问题,就是对于一个点对ij且d[i]=d[j]时,包含它们的联通块在枚举i和j时都会被枚举到一次,答案就会算多。

如果做题比较多的话就能想出

卡边界的时候要注意判不合法。

bzoj5250

标签:set   pst   指令   大于等于   比较   树形背包   概率   连接   任务   

原文地址:https://www.cnblogs.com/ZH-comld/p/10012846.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!