【题解】D-飞行棋(7612. 2020牛客NOIP赛前集训营-普及组(第五场))

T4 飞行棋

https://ac.nowcoder.com/acm/contest/7612/D

D-飞行棋

思路

为从 走到 的 步数。

  • 时,
  • 时, 期望为

来源:2020牛客NOIP赛前集训营-普及组(第五场)题解 【链接】

代码

#include<bits/stdc++.h>

using namespace std;

int main() {
    int t;
    cin >> t;
    while(t--) {
        int n, d;
        cin >> n >> d;
        if(d == 1) {
            cout << "1.00" << endl;
        }
        else if(n < d) {
            cout << fixed << setprecision(2) << d-1.00 << endl;
        }
        else {
            double f[100005], sum[100005];
            memset(f, 0x00, sizeof(f));
            memset(sum, 0x00, sizeof(sum));
            f[0] = sum[0] = 1;
            for(int i = 1 ; i < d, i <= n ; i++) {
                f[i] = d - 1.00;
                sum[i] = sum[i-1] + f[i];
            }
            for(int i = d ; i <= n ; i++) {
                    f[i]   = (sum[i-1] + f[i] - f[i-d-1])/d;
                    sum[i] = sum[i-1] + f[i] - f[i-d-1];
            }
            cout << fixed << setprecision(2) << f[n] << endl;
        }
    }
    return 0;
}
全部评论

相关推荐

想出去带家人放松顺便自己也休息下,但怕有时间冲突
白火同学:如果国庆真有面试,那国庆都不放假的公司,未免也太压榨了,还是避坑吧。
我的秋招日记
点赞 评论 收藏
分享
09-14 17:23
门头沟学院
故事和酒66:所以说副业很重要,程序员干到40岁,再怎么也赚300万了,吃吃利息也够活下去
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务