码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2019-08-14 21:54:16      阅读:64      评论:0      收藏:0      [点我收藏+]

标签:include   etc   add   name   tar   style   names   +=   case   

题目传送门

  题意: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\n",cat++,ans);
    }
}

 

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

标签:include   etc   add   name   tar   style   names   +=   case   

原文地址:https://www.cnblogs.com/mountaink/p/11354652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!