概率期望题

LightOJ1030 Discovering Gold

题意:

在一个长度为n的一排格子里,每个格子都有相应的金币数,走到相应格子的话,就会得到该格子的金币。
有一个人在1这个位置,手里有一颗色子,色子摇到几,他就前进几步,但如果当前位置+色子数>n,那么他就会重新摇色子。走到n则游戏结束,问游戏结束时,这个人得到金币的期望。

思路:
d[i]表示从i出发能得到的金币期望数.
这题从后往前推,初始情况下d[n]=a[n]是确定的.
d[i]=(d[i+1]+d[i+2]+d[i+3]+d[i+4]+d[i+5]+d[i+6])/6+a[i];(有时候没有6,最多加到n).
code:
#include<bits/stdc++.h>
using namespace std;
const int maxm=105;
double d[maxm];
int a[maxm];
signed main(){
    int T;
    int cas=1;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        d[n]=a[n];
        for(int i=n-1;i>=1;i--){
            d[i]=a[i];
            double sum=0;
            int cnt=0;
            for(int j=1;j<=6;j++){
                if(i+j>n)break;
                sum+=d[i+j];
                cnt++;
            }
            d[i]+=sum/cnt;
        }
        printf("Case %d: %.10f\n",cas++,d[1]);
    }
    return 0;
}

牛客 音乐鉴赏

题面:

在这里插入图片描述

思路:

在这里插入图片描述

code:
#include<bits/stdc++.h>
using namespace std;
signed main(){
    int n;
    cin>>n;
    int sum=0;
    for(int i=1;i<=n;i++){
        int x;
        cin>>x;
        sum+=x;
    }
    double S=sum-90*n;
    double ans=S/(9*n+S)*100;
    printf("%.2f%\n",ans);
    return 0;
}

CodeForces1139 D. Steps to One(

题意:

给一个整数n,n<=1e5
开始你有一个空数组,
每次操作你从1到n中随机选择一个数,然后加入数组,
如果数组的gcd为1则停止操作,否则重复操作
问最后数组的长度期望是多少,在模1e9+7意义下把分数转化为整数

思路:
code:

牛客 身体训练

题意:

在这里插入图片描述

解法:

来自牛客用户Kur1su:
在这里插入图片描述

code:
#include<bits/stdc++.h>
using namespace std;
const int maxm=1e3+5;
double c[maxm];//最高速度
double d[maxm];//衰减速度
double v,u;
int n;
signed main(){
    cin>>n>>v>>u;
    for(int i=1;i<=n;i++)cin>>c[i];
    for(int i=1;i<=n;i++)cin>>d[i];
    double sum=0;
    for(int i=1;i<=n;i++){//枚举配送员
        for(int j=1;j<=n;j++){//枚举配送员的初始位置
            sum+=u/(c[i]-(j-1)*d[i]-v);
        }
    }
    printf("%.3f\n",sum);
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值