组合数前缀和

问题描述

在这里插入图片描述

  • 直接暴力求,就算预处理了逆元,复杂度也得 T m T*m 吧。
  • 先看看式子能不能搞一搞啊。
    f ( n , m ) = i = 0 m C n i % 1 0 9 + 7 f(n,m)=\sum_{i=0}^mC_n^i\%10^9+7
    = i = 0 m ( C n 1 m + C n 1 m 1 ) =\sum_{i=0}^{m}(C_{n-1}^m+C_{n-1}^{m-1})
    = i = 0 m 2 C n 1 m C n 1 m s i g m a =\sum_{i=0}^{m}2*C_{n-1}^m-C_{n-1}^m(考虑拆开sigma证明)
    = f ( n 1 , m ) 2 C n 1 m =f(n-1,m)*2-C_{n-1}^m
  • 式子搞完了,可是好像没什么卵用啊。
  • 分块打表?可是这是二维的,打表怎么着也得 n m \sqrt{n}*\sqrt{m} 吧,代码长度铁定挂啊。
  • 考虑做一个类似分块打表的预处理。我们处理出 f ( i , j ) f(i,j) ,其中每一个 j j 都是一个关键点,即不同的 j j 只有 m \sqrt{m} 个。这样代码长度、空间时间都符合了题目要求。
  • 代码先咕着,因为不知道原题在哪里。

猜你喜欢

转载自blog.csdn.net/qq_39759315/article/details/88919657