LightOJ 1342 Aladdin and the Magical Sticks 期望(结论题)

题目传送门

  题意:n根木棍,每根木棍都有一个权值,木棍有可识别的木棍和不可识别的木棍,每次抽取木棍时,会累加权值,如果是可识别的木棍就不放回,不可识别的木棍就放回,问每根木棍至少被抽取一次,权值的期望是多少。

  思路:论文题?

    1类棍子只会拿起一次,ans+=权值

    2类棍子会拿起多次,ans+=权值*h[n]       h[n]为调和级数第n项

  证明的博客

#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define dep(i,b,a) for(int i=b;i>=a;i--)
#define clr(a,b) memset(a,b,sizeof(a))
#define pb push_back
#define pii pair<int,int >
using namespace std;
typedef long long ll;
ll rd() {
    ll x=0,f=1;
    char ch=getchar();
    while(ch<'0'||ch>'9') {
        if(ch=='-')f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9') {
        x=x*10+ch-'0';
        ch=getchar();
    }
    return x*f;
}
const int maxn=5000+10;
double f[maxn];
int main(){
    int T,cat=1;
    for(int i=1;i<=5000;i++){
        f[i]=f[i-1]+1.0/i;
    }
    cin>>T;
    while(T--){
        int n;
        double ans=0;
        cin>>n;
        rep(i,1,n){
            int w,ty;
            cin>>w>>ty;
            if(ty==1){
                ans+=w;
            }else{
                ans+=w*f[n];
            }
        }
        printf("Case %d: %.7f
",cat++,ans);
    }
}
原文地址:https://www.cnblogs.com/mountaink/p/11354652.html