• [SP1026] FAVDICE


    SP1026 FAVDICE - Favorite Dice

    一.前言

    ​ 沉浸在中考成绩的悲伤中……上连接

    二.思路

    ​ 我就明说了吧,期望,期望!期望二字都给我A到脸上来了……但是期望怎么做呢?我也不会也?

    好吧好吧,分析一下。

    ​ 首先思路1,假设当前已经扔出了i个不同的面,那么下一次扔出一个新的面的概率是(dfrac{n-i}{n}),扔出一个新面的期望是(dfrac{n}{n-i}),(概率乘期望等于1奥,这很重要,要区分开)故易得式子(期望分步互不冲突,加法原理) (ans=sum^n_{i=1} dfrac{n}{n-i}) ,然后i与n-i是等价的,转换一下得 (ans=sum^n_{i=1} dfrac{n}{i})

    ​ 然后思路2,这个其实比较常规奥,用的是递推。(f[i]) 表示已经扔出i个不同的面,后为了扔出所有面,还需要扔的次数的期望。,显然答案是 (f[0])(f[n]=0),然后分成两种情况,现在扔一次,得出的面不是一个新面,(概率为 (dfrac{i}{n})),这次其实相当于作废需要扔 (f[i]) 次才行,如果得出的面是一个新面,(概率为 (dfrac{n-i}{n})),则只需要还扔 (f[i+1]) 次就行。因为是有是否出新面的大前提,相互影响,乘法原理。本身是扔了一次的,三个部分结合一下。可以得出一个式子。

    [f[i]=frac{i}{n}f[i]+frac{n-i}{n}f[i+1]+1; ]

    很显然,熟知递推的你可能会跟呆呆的我一样有大大的疑惑,明明左右都有 f[i] 这个怎么转移?答案是,这不是转移方程。,把转移二字去掉,这个方程是成立的,并且可以解出 f[i] 与 f[i+1] 的关系,那才是转移方程。,那么解它。

    [f[i]=frac{i}{n}f[i]+frac{n-i}{n}f[i+1]+1\ frac{n-i}{n}f[i]=frac{n-i}{n}f[i+1]+1\ ecausefrac{n-i}{n}!=0\ f[i]=f[i+1]+frac{n}{n-i}\ herefore ans=sum^n_{i=1} dfrac{n}{i} ]

    三.CODE

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<fstream>
    using namespace std;
    int n,t;
    double ans;
    int main(){
    	cin>>t;
    	while(t--){
    		ans=0.0;
    		cin>>n;
    		for(int i=1;i<=n;++i)ans+=1.00*n/i;
    		printf("%.2f
    ",ans);
    	}
    	return 0;
    }
    
  • 相关阅读:
    《C语言课程设计与游戏开发实践课程》67章总结
    祖玛(Zuma)
    .net 实现微信公众平台的主动推送信息
    关于ASP与C#的感悟
    不同方面高手的地址。
    ASP中关于全局页面的作用 asax文件
    学习C#,开始了我的第一个进程。
    江苏立方网络科技有限公司招聘PHP工程师
    网上看到的ArcEngine控制地图显示范围的好方法(记下)
    3DS文件结构
  • 原文地址:https://www.cnblogs.com/clockwhite/p/13372658.html
Copyright © 2020-2023  润新知