• codeforces 407C Curious Array


    codeforces 407C Curious Array

    UPD: 我觉得这个做法比较好理解啊


    参考题解: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," 
    "[i==n]);
        }
        return 0;
    }
    
  • 相关阅读:
    虚拟机设置静态ip
    hadoop2.5重新编译问题
    python(2)-函数相关
    python(1)
    python中raw_input输入数字问题
    多线程-AsyncTask
    Handler消息处理机制
    01-Java多线程
    01.JS基本语法-数据类型和变量
    (4)RecyclerVIew
  • 原文地址:https://www.cnblogs.com/wuyuanyuan/p/8622603.html
Copyright © 2020-2023  润新知