zoukankan      html  css  js  c++  java
  • [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;
    }
    
  • 相关阅读:
    java开发异常类型汇总
    dm642在线写EPROM.txt
    [Codecademy] HTML&CSS 第一课:HTML Basic
    bram和dram差别
    Advanced Fruits HDU杭电1503【LCS的保存】
    add Admob with Cocos2d-x on iOS
    一种基于Qt的可伸缩的全异步C/S架构server实现(五) 单层无中心集群
    【SSH2框架(理论篇)】--SSH2 Vs 经典三层
    CSS BFC学习笔记
    【智能家居篇】wifi网络结构(上)
  • 原文地址:https://www.cnblogs.com/clockwhite/p/13372658.html
Copyright © 2011-2022 走看看