zoukankan      html  css  js  c++  java
  • [CF712D] Memory and Scores

    Description

    A,B 两人玩一个游戏,共有 t 轮,每轮没人随机等概率从 [-k,k] 中选一个数字加到总得分中,初态下分别有 a,b 分,末态下得分高者胜利。问 A 胜利的概率 ( imes (2k+1)^2t) 的在模 (10^9+7) 下的值。(t le 100, kle 1000)

    Solution

    设第 (i) 次(每轮算两次)时分差为 (j) 的概率 ( imes (2k+1)^i)(f[i][j]),则

    [f[i][j]=sum_{l=j-k}^{j+k} f[i-1][l] ]

    用一下前缀和即可。

    #include <bits/stdc++.h>
    using namespace std;
    
    #define int long long
    const int N = 400005;
    const int mod = 1e9+7;
    
    int f[N],g[N],a,b,k,t;
    
    signed main()
    {
        ios::sync_with_stdio(false);
    
        cin>>a>>b>>k>>t;
        t*=2;
    
        f[k*t]=1;
        for(int i=1;i<N;i++) f[i]+=f[i-1], f[i]%=mod;
    
        for(int i=1;i<=t;i++)
        {
            for(int j=0;j<N;j++)
            {
                if(j-k-1<0) g[j]=f[j+k];
                else g[j]=(f[min(N-1,j+k)]-f[j-k-1]+mod)%mod;
            }
            f[0]=g[0];
            for(int j=1;j<N;j++) f[j]=g[j], f[j]+=f[j-1], f[j]%=mod;
        }
    
        int ans=0;
        for(int i=0;i<k*t+a-b;i++) ans+=g[i], ans%=mod;
    
        cout<<ans<<endl;
    }
    
    
  • 相关阅读:
    多线程
    socket
    十一、内置模块
    十、模块与包
    Javaweb学习笔记11 JDBC
    Javaweb学习笔记10 4种范围对象
    Javaweb学习笔记9 application
    Javaweb学习笔记8 session与cookie区别
    Javaweb学习笔记7 session
    Javaweb学习笔记6 jsp页面元素
  • 原文地址:https://www.cnblogs.com/mollnn/p/13626318.html
Copyright © 2011-2022 走看看