题目链接
做法
非常自然的就想到dp,以$f_{i,j}$表示前$i$门课,目前碾压了$j$人的方案数。
枚举我这门课的分数$a$,前$i-1$门中有$k$个人被碾压。
$u_i$表示这门课的最高分,$r_i$表示B神这门课的排名。
转移如下
实际上就是强行钦定j个人的分数仍然小于等于我,k-j个人的分数都大于我。
分数小于等于我的实际人数为$n-r_i$个,已经钦定了$j$个,所以还剩$n-r_i-j$个在除了k个被钦定过的人之外选。后面这个求和就是计算有不同分数的方案数。
以上做法可以获得40分。
主要原始是在$u_i$大的时候枚举的复杂度无法接受。
发现后面一个求和显然是个关于$u_i$的n次函数(由于有求和,所以再加一次),我们用拉格朗日插值就可以在$O(n)$的时间复杂度内计算出。
预处理快速幂,时间复杂度$O(n^4)$LOJ太快了,不预处理快速幂都能过
代码
1 |
|