码迷,mamicode.com
首页 > 其他好文 > 详细

codeforces 407C Curious Array

时间:2018-03-22 12:36:04      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:http   turn   scan   max   its   span   std   array   ons   

codeforces 407C Curious Array

参考题解:https://www.cnblogs.com/ChopsticksAN/p/4908377.html

1、杨辉三角可以由多维前缀和求得。
2、“搭顺风车”的思想。
3、// 右端点减去的那个数可以用组合数学的方法思考。

#include<bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define rep(i, a, b) for(int i=(a); i<(b); i++)
#define sz(x) (int)x.size()
#define de(x) cout<< #x<<" = "<<x<<endl
#define dd(x) cout<< #x<<" = "<<x<<" "
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;

const int N=101010, P=1e9+7;

int n,m;
int a[N];
ll b[111][N], jc[N], inv[N];

ll kpow(ll a,ll b) {
    ll res=1;
    while(b) {
        if(b&1) res=res*a%P;
        a=a*a%P;
        b>>=1;
    }
    return res;
}

ll upd(ll &a, ll b) {
    a=(a+b)%P;
    if(a<0) a+=P;
}

void init() {
    jc[0]=1;
    rep(i,1,N) jc[i]=jc[i-1]*i%P;
    inv[N-1]=kpow(jc[N-1], P-2);
    for(int i=N-2;~i;--i) inv[i]=inv[i+1]*(i+1)%P;
}

ll C(int n,int m) {
    return jc[n]*inv[m]%P*inv[n-m]%P;
}

int main() {
    init();
    while(~scanf("%d%d",&n,&m)) {
        ///init
        memset(b,0,sizeof(b));
        ///read
        rep(i,1,n+1) scanf("%d",a+i);
        int ma=0;
        rep(i,0,m) {
            int l,r,k;scanf("%d%d%d",&l,&r,&k);
            ma=max(ma, k);
            upd(b[k+1][l], 1);
            rep(j,1,k+2) upd(b[j][r+1], -C(k-j+r-l+1, k+1-j));
        }
        ///solve
        for(int i=ma;~i;--i) {
            ll pre=0;
            rep(j,1,n+1) {
                upd(pre, b[i+1][j]);
                upd(b[i][j], pre);
            }
        }
        rep(i,1,n+1) printf("%lld%c",(a[i]+b[0][i])%P," \n"[i==n]);
    }
    return 0;
}

codeforces 407C Curious Array

标签:http   turn   scan   max   its   span   std   array   ons   

原文地址:https://www.cnblogs.com/wuyuanyuan/p/8622603.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!