题意
给一个长度为$n$的数组,取$m$个数字,其中最大值最小值相差不大于$k$,问这种方式有多少种,答案$\mod 10^9+7$。
分析
通过简单版本大概了解了这题要枚举最小值来判断个数,那么我们枚举最小值$i$,其他的数都要在$[i,i+k]$中取,而不能全部都在$[i+1,i+k]$中取,否则与枚举的最小值$i$不符。
采用容斥原理,将在$[i,i+k]$取数的情况减去在$[i+1,i+k]$取数的情况即可。
组合数可以预处理,也可以采用预处理阶乘处理,也可以使用卢卡斯定理。(预处理时记得控制空间)
1 |
|