51Nod为了活跃比赛前的气氛,组织了场抽卡比赛。这场比赛共 n个人参加,主办方根据非欧血统鉴定器,得到了一些数据。每个人抽卡有 Mi 种可能,得到的卡能力值为 Aij 代价为 Gij 的可能性为 Pij ,所谓代价指的是玩家需要将一轮比赛后所得的点头盾的 Gij% 交给主办方。每轮比赛每个人都随机抽取卡片,待全部人抽取完毕后进行排名(按照A从大到小排),排在第 i 位的人有 Vi 的点头盾收入。现在主办方想知道一轮比赛后每个人的期望收入。
第一行一个正整数 n
接下来 n 个部分
每个部分第一行为正整数 Mi,接下来 Mi 行有三个整数 Aij Gij Pij
接下来一行 n 个整数,分别为 Vi
设 ∑Pij=Qi,则第 i 个人抽到第 j 张卡的概率为 Pij/Qi
1<=n,Mi<=200,1<=Aij<=1000000000,保证 Aij 互不相同,0<=Gij<=100,1<=Pij<=1000,1<=Vi<=1000
容易想到算枚举人,枚举他抽的哪张卡,求是第k名的概率。
暴力dp是 O ( n 4 ) O(n^4) O(n4)的。
发现重复计算很多。
从小到大枚举卡的权值,求这个权值是第k名的概率 a k a_k ak。
那么我们可以转而求它的生成函数: F ( x ) = ∑ i = 0 n a i x i F(x) = \sum_{i=0}^n a_i x^i F(x)=∑i=0naixi
可以发现当我们枚举的权值为 v a l val val时。
F ( x ) = ∏ i = 1 n ( p i x + ( 1 − p i ) ) F(x) = \prod_{i=1}^n(p_ix+(1-p_i)) F(x)=