博客
关于我
[Gym - 102861A] A - Sticker Album 概率dp
阅读量:341 次
发布时间:2019-03-04

本文共 1332 字,大约阅读时间需要 4 分钟。

题目链接:

题意

给你一个容量为n的卡牌收集册,以及无限个卡牌包,卡牌包有[a,b]个卡牌,取出的卡牌数是等概率分布的,言外之意你有 1 b − a + 1 {\frac{1}{b-a+1}} ba+11的概率取出a、a+1、…、b张卡牌。问你把卡牌收集册集满时的概率期望是多少。

题解

设dp[i]:你已经有i张卡牌,你要集满n张还需多少卡牌。

状态转移:
d p [ i ] = ( d p [ i + a ] + 1 ) + ( d p [ i + a + 1 ] + 1 ) + . . . . ( d p [ i + b ] + 1 ) b − a + 1 {dp[i]=\frac{(dp[i+a]+1)+(dp[i+a+1]+1)+....(dp[i+b]+1)}{b-a+1}} dp[i]=ba+1(dp[i+a]+1)+(dp[i+a+1]+1)+....(dp[i+b]+1)

不难看出我们只需记录出 d p [ i + a ] ~ d p [ i + b ] {dp[i+a]~dp[i+b]} dp[i+a]dp[i+b]的和就能完成递推式。

但题目给出a可能为0

此时状态转移为:

d p [ i ] = ( d p [ i ] + 1 ) + ( d p [ i + 1 ] + 1 ) + . . . . ( d p [ i + b ] + 1 ) b − a + 1 {dp[i]=\frac{(dp[i]+1)+(dp[i+1]+1)+....(dp[i+b]+1)}{b-a+1}} dp[i]=ba+1(dp[i]+1)+(dp[i+1]+1)+....(dp[i+b]+1)(取l=b-a+1)

l − 1 l d p [ i ] = d p [ i + 1 ] + d p [ i + 2 ] + . . . + d p [ i + b ] l + 1 {\frac{l-1}{l}dp[i]=\frac{dp[i+1]+dp[i+2]+...+dp[i+b]}{l}+1} ll1dp[i]=ldp[i+1]+dp[i+2]+...+dp[i+b]+1

不难看出我们只需记录出 d p [ i + 1 ] ~ d p [ i + b ] {dp[i+1]~dp[i+b]} dp[i+1]dp[i+b]的和就能完成递推式。所以a为0的状态转移和a不为0的略有不同,需要特判。

代码

double dp[maxn];int main(){   	int n,a,b,len;	cin >> n >> a >> b;	len=b-a+1;	dp[n]=0.0;	double sum=0.0;	for(int i=n-1;i>=0;i--)	{   		if(!a)		{   			dp[i]=(sum+len*1.0)/(len-1.0);			sum-=dp[i+b];			sum+=dp[i];		}		else		{   			dp[i]=sum*1.0/len+1;			sum-=dp[i+b];			sum+=dp[i+a-1];		}	}	printf("%.8lf",dp[0]);}

转载地址:http://khmh.baihongyu.com/

你可能感兴趣的文章
Mysql学习总结(67)——MYSQL慢查询日志
查看>>
Mysql学习总结(68)——MYSQL统计每天、每周、每月、每年数据 SQL 总结
查看>>
Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
查看>>
Mysql学习总结(6)——MySql之ALTER命令用法详细解读
查看>>
Mysql学习总结(70)——MySQL 优化实施方案
查看>>
Mysql学习总结(71)——MySQL 重复记录查询与删除总结
查看>>
Mysql学习总结(71)——数据库介绍(MySQL安装 体系结构、基本管理)再回顾
查看>>
Mysql学习总结(72)——MySQL 开发者开发,设计规范再总结
查看>>
Mysql学习总结(73)——MySQL 查询A表存在B表不存在的数据SQL总结
查看>>
Mysql学习总结(74)——慢SQL!压垮团队的最后一根稻草!
查看>>
Mysql学习总结(75)——并发量大、数据量大的互联网业务数据库设计军规
查看>>
Mysql学习总结(76)——MySQL执行计划(explain)结果含义总结
查看>>
Mysql学习总结(77)——温故Mysql数据库开发核心原则与规范
查看>>
Mysql学习总结(78)——MySQL各版本差异整理
查看>>
Mysql学习总结(79)——MySQL常用函数总结
查看>>
Mysql学习总结(7)——MySql索引原理与使用大全
查看>>
Mysql学习总结(80)——统计数据库的总记录数和库中各个表的数据量
查看>>
Mysql学习总结(81)——为什么MySQL不推荐使用uuid或者雪花id作为主键?
查看>>
Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
查看>>
Mysql学习总结(83)——常用的几种分布式锁:ZK分布式锁、Redis分布式锁、数据库分布式锁、基于JDK的分布式锁方案对比总结
查看>>