zoukankan      html  css  js  c++  java
  • 牛客多校Round 9

    Solved:1

    rank:112

    E. Music Game

    题解说有个非简化的原题 bzoj4318

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod = 1e9 + 7;
    ll n, m;
    ll p[1005];
    ll comb[1005][1005];
    
    ll pow_mod(ll x, ll y)
    {
        ll res = 1;
        while(y)
        {
            if(y & 1) res = res * x % mod;
            x = x * x % mod;
            y >>= 1; 
        }
        return res;
    }
    
    
    int main()
    {
        scanf("%lld%lld", &n, &m);
        ll inv = pow_mod(100, mod - 2);
        for(int i = 1; i <= n; i++) scanf("%lld", &p[i]);
        for(int i = 1; i <= n; i++)
        {
            comb[i][i] = p[i] * inv % mod;
            for(int j = i + 1; j <= n; j++) comb[i][j] = comb[i][j - 1] * p[j] % mod * inv % mod;
        }
    
        ll ans = 0;
        for(int i = 1; i <= n; i++)
        {
            for(int j = i; j <= n; j++)
            {
                ll tmp = pow_mod(j - i + 1, m);
                (tmp *= comb[i][j]) %= mod;
                if(i != 1) tmp = tmp * (100 - p[i - 1]) % mod * inv % mod, tmp %= mod;
                if(j != n) tmp = tmp * (100 - p[j + 1]) % mod * inv % mod, tmp %= mod;
                (ans += tmp) %= mod;
            }
        }
        printf("%lld
    ", ans);
        return 0;    
    } 
    View Code
  • 相关阅读:
    C#中double转int时需要注意的地方
    OracleHelper类
    POJ2570, ZOJ1967
    ZOJ3088
    POJ3259(spfa判负环)
    POJ3268
    ZOJ1092 POJ2240
    ZOJ1298 POJ1135
    SRM587 div2
    POJ1679判断最小生成树是否唯一
  • 原文地址:https://www.cnblogs.com/lwqq3/p/9503483.html
Copyright © 2011-2022 走看看