差分、前缀和和组合数
1、
所加的如果式组合数的话,可以通过多次前缀和求得,进而用差分解决区间加的问题。
# include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXN=1e5+100;
const LL mod=1e9+7;
LL a[MAXN],c[MAXN][105],f[MAXN][105];
void init()
{
    for(int i=0;i<MAXN;++i) c[i][0]=1;
    for(int i=1;i<MAXN;++i){
        for(int j=1;j<105;++j){
            c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
        }
    }
    return ;
}
int main()
{
    init();
    int N,M; scanf("%d%d",&N,&M);
    for(int i=1;i<=N;++i){
        scanf("%lld",&a[i]);
    }
    int L,R,K;
    for(int i=1;i<=M;++i){
        scanf("%d%d%d",&L,&R,&K);
        f[L][K]=(f[L][K]+1)%mod;
        for(int j=K;j>=0;j--){
            f[R+1][j]=(f[R+1][j]-c[K-j+R-L][K-j]);
        }
    }
    for(int i=100;i>=0;i--){
        for(int j=1;j<=N;++j){
            f[j][i]=(f[j][i]+