【bzoj 4870】组合数问题

来源:互联网 发布:mac怎么下游戏 编辑:程序博客网 时间:2024/06/05 08:47

Description

i=1nCik+rnkmod p

n<=1e9,k,r<=50,2<=p<=2^30-1

Analysis

考虑所求和式的组合意义
• 从 nk 个物品中,选出模 k 余 r 个物品的方案数
dp[i][j] 表示考虑了前 i 个物品,选出来的物品数模 k 为 j的方案数
dp[i+1][j]=dp[i][j]+dp[i][j1]
• 从 i 到 i+1 的转移保持不变,可以矩乘优化
O(k3logn)
然而 这个dp 比较神奇
有“结合律”
dp[n+m][i+j]=dp[n][i]dp[m][j]
可以理解为“枚举前 n 个物品和后 m 个物品的选取情况”
由结合律,可以直接对dp数组快速幂
O(k2logn)