标签:题解 表示 不同 题意 计数 zoj 情况 必修课 算法
【题意】n位同学(其中一位是B神),m门必修课,每门必修课的分数是[1,Ui]。B神碾压了k位同学(所有课分数<=B神),且第x门课有rx-1位同学的分数高于B神,求满足条件的分数情况数。当有一位同学的一门必修课分数不同时视为两种情况不同。n,m<=100,Ui<=10^9。
【算法】计数DP+排列组合+拉格朗日插值
【题解】把分数作为状态不现实,只能逐门课考虑。
设$f[i][j]$表示前i门课,有j个同学被碾压的情况数,则有:
$$f[i][j]=g(i)\cdot\sum_{k=j}^{n}f[i-1][k]\cdot\binom{k}{k-j}\cdot\binom{n-k-1}{r_i-k+j}$$
其中,$g(i)$表示第i门课的合法分数情况数,因为容易发现当天分数合法情况数与多少人被碾压等信息无关,所以可以独立出来。
枚举前i-1门课被碾压的人数k,那么有
【BZOJ】4559: [JLoi2016]成绩比较 计数DP+排列组合+拉格朗日插值
标签:题解 表示 不同 题意 计数 zoj 情况 必修课 算法
原文地址:https://www.cnblogs.com/onioncyc/p/8831107.html