zoukankan      html  css  js  c++  java
  • ●Joyoi 收集邮票

    题链:

    http://www.joyoi.cn/problem/tyvj-2325
    题解.1:

    期望dp,(平方的期望不等于期望的平方。。。)
    在这个题上坑了好久,也算是对期望的理解又深了一些。
    很好的题解:http://www.cnblogs.com/ezyzy/p/6475861.html

    再阐述一下平方的期望是在什么情况下可以递推的:
    对于一个随机变量x,我们知道其每个取值的概率,
    那么我们容易由定义得出这个随机变量的期望E(x)=p1*x1+p2*x2+...,
    以及这个随机变量的平方的期望E(x²)=p1*x1²+p2*x2²+...。
    现在由于种种原因,假设我们需要求出在这个随机变量的每个取值都加1但是概率不变的情况下的新的平方的期望E'(x²)=p1*(x1+1)²+p2*(x2+1)²+...,
    (注意,只是权值改变,对应概率未变)
    那么这个时候就可以用平方的期望的递推式子了:E'(x²)=E(x²)+2*E(x)+1

    反观这类题目的dp转移往往是分为当前状态成功与否两种情况,
    而当我们确定了某种情况后,接下来就需要计算当前+后面的东西的总期望,再乘上这种情况的概率。
    因为已确定了是成功还是失败,所以当前状态对期望的贡献只是在随机变量的取值上,而没有影响到其概率分布,所以才可以直接使用平方的期望的递推式子。


    代码.1:

    #include<bits/stdc++.h>
    #define MAXN 10005
    using namespace std;
    double g[MAXN],f[MAXN];
    int N;
    int main(){
    	ios::sync_with_stdio(0);
    	cin>>N;
    	for(int i=N-1;i>=0;i--){
    		f[i]=f[i+1]+1.0*N/(N-i);
    		g[i]=1.0*i/N*(2*f[i]+1)+1.0*(N-i)/N*(g[i+1]+2*f[i+1]+1);
    		g[i]=g[i]/(N-i)*N;
    	}
    	cout<<fixed<<setprecision(2)<<(g[0]+f[0])/2<<endl;
    	return 0;
    }
    

      

    题解.2:

    求期望。。。
    正向枚举已经收集了i个,并计算收集第i个时的相关信息与贡献,
    令a[i]表示收集了i个时期望购买了a次。
    那么a[i+1]=a[i]+N/(N-i) (加上收集第i+1个时期望的购买次数)
    然后要求收集第i+1个时期望的花费,
    首先之前已经期望购买了a次,那么我们考虑:
    首先一定要先买一次,价格为a+1
    如果没买到(概率为i/N),再买一次,价格为a+2
    如果还没买到(概率为(i/N)²),在买一次,价格为a+3
    ....(子子孙孙,无穷匮也。。。)
    那么可以列出期望花费的式子:令p=i/N
    A=(a+1)+(a+2)*p+(a+3)*p²+(a+4)*p³+.... [1]式
    然后我们要求A的值,用错位相减法的得到,即:
    A*p= (a+1)*p+(a+2)*p²+(a+3)*p³+.... [2]式
    [1]式-[2]式:
    (1-p)*A=a+1+p+p²+p³+...,是一个无穷项的等比数列
    =a+1/(1-p)
    所以得到A=(a+1/(1-p))/(1-p)
    然后把A加进答案ans即可,(期望的线性可加性嘛,A即表示收集第i+1个所期望的花费)

    代码.2:

    #include<bits/stdc++.h>
    #define MAXN 100005
    using namespace std;
    double p,a,ANS;
    int N;
    int main(){
    	ios::sync_with_stdio(0);
    	cin>>N;
    	for(int i=0;i<N;i++){
    		ANS+=(a+1.0*N/(N-i))/(1-1.0*i/N);
    		a+=1.0*N/(N-i);
    	}
    	cout<<fixed<<setprecision(2)<<ANS<<endl;
    	return 0;
    }
    

      

  • 相关阅读:
    文档数据库 海量文本分析 搜索引擎 NoSql 数据库 NewSql 数据库 图数据库 知识图谱 联想 白盒人工智能
    我发起了 一个 桌面程序 窗体界面 开源项目 WinFormXml
    调幅 是 电子技术, 调频 是 量子技术
    出一道题 : 证明 超外差收音机 的 混频原理
    研究一下 容器 的 原理
    设计 一个 CPU 的 存储管理部件
    我发起了 一个 操作系统 开源项目, 名字待定
    ServerFul 架构
    谈谈 ServerFul 架构
    状态机 控制机 任务机
  • 原文地址:https://www.cnblogs.com/zj75211/p/8543027.html
Copyright © 2011-2022 走看看