• 2019 Multi-University Training Contest 7 Kejin Player(期望)


    题意:给定在当前等级升级所需要的花费 每次升级可能会失败并且掉级 然后q次询问从l到r级花费的期望

    思路:对于单次升级的期望 我们可以列出方程:

    所以我们可以统计一下前缀和 每次询问O1回答

    #include <bits/stdc++.h>
    using namespace std;
    const double pi = acos(-1.0);
    const int N = 5e5+7;
    const int inf = 0x3f3f3f3f;
    const double eps = 1e-6;
    typedef long long ll;
    const ll mod = 1e9+7;
    ll dp[N],r[N],s[N],x[N],a[N];
    ll q_pow(ll a,ll n){
        ll ans=1; ll base=a;
        while(n){
            if(n&1) ans=(ans*base)%mod;
            base=base*base%mod;
            n>>=1;
        }
            return ans;
    }
    ll inv(ll a,ll b){
        return q_pow(a,b-2);
    } 
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        int t;
        cin>>t;
        while(t--){
            int n,q; cin>>n>>q;
            for(int i=1;i<=n;i++){
                cin>>r[i]>>s[i]>>x[i]>>a[i];
            }
            for(int i=1;i<=n;i++){
                dp[i+1]=(s[i]*((dp[i]+a[i])%mod)%mod-(s[i]-r[i])%mod*dp[x[i]]%mod+mod)%mod*inv(r[i],mod)%mod;
            }
            for(int i=1;i<=q;i++){
                int l,r;
                cin>>l>>r;
                cout<<(dp[r]-dp[l]+mod)%mod<<endl;
            }
        } 
    } 
  • 相关阅读:
    java基础 01
    c++11——模板的细节改进
    c++11——auto,decltype类型推导
    poj_1182 并查集
    poj_1988 并查集
    poj_1161 并查集
    poj_3067 树状数组
    poj_2182 线段树/树状数组
    poj_1190 树状数组
    动态规划
  • 原文地址:https://www.cnblogs.com/wmj6/p/11345353.html
Copyright © 2020-2023  润新知