题目链接
做法
非常自然的就想到dp,以fi,j表示前i门课,目前碾压了j人的方案数。
枚举我这门课的分数a,前i−1门中有k个人被碾压。
ui表示这门课的最高分,ri表示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 |
|