洛谷-收集邮票-(期望dp+期望的平方+平方的期望)

P4550

题意:
就是有n种邮票,小A去买,每次随机得到其中一张,第k次购买需要k元钱,问你小A获得n种邮票花的钱的期望。

思考:

  1. 一看就是经典随机数的题目,但是这个莫名带上了第k次买k元钱,不过还是直接求购买次数的期望就可以了呀。然后求出来求平方发现不对。因为求的是花的钱的期望,而不是把期望求出来再平方。

  2. 所以还要定义另一个dp2,是平方的期望。推一推式子:在这里插入图片描述

  3. 还有要注意的就是E(xi) = E(xi+1)如果是增加一次操作次数,都是在E里面加的,因为xi的定义就是已经有了i个的"操作次数",既然操作次数加1了,那么就是这个x要加1。如果是用了下一个状态,也就是E(xi+1)那么就是在下标加1。对x的定义要明确好。

代码:

#include<bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define db double
#define int long long
#define PII pair<int,int >
#define mem(a,b) memset(a,b,sizeof(a))
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);

using namespace std;
const int mod = 1e9+7,inf = 1e18;
const int N = 2e5+10,M = 2010;

int T,n,m,k;
int va[N];
db dp1[N];
db dp2[N];

signed main()
{
	IOS;
	cin>>n;
	db ans = 0,sum = 0;
	for(int i=n-1;i>=0;i--)
	{
		dp1[i] = dp1[i+1]+(db)n/(n-i);
		dp2[i] = dp2[i+1]+(db)i/(n-i)*2*dp1[i]+2*dp1[i+1]+(db)n/(n-i);
	}
	printf("%.2lf",(dp1[0]+dp2[0])/2);
	return 0;
}

总结:
确定好思考的公式。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值