题面

题面

题解

期望\(dp\)好题!

今年\(ZJOI\)有讲过这题...

首先因为\(T\)只有\(50\),大力\(dfs\)后发现,可能的状态数最多只有\(20w\)左右,所以我们就可以大力爆搜了。

设\(dp_i\)为状态为\(i\)时达到目标的期望天数。

则\(dp_i=1+p*dp_{last_i}+(1-p)*\frac{1}{|next_i|}*\sum dp_{next_{i}}\)

其中\(last_{i}\)表示\(i\)删掉\(min\)的状态,\(next_{i}\)表示\(i\)再取一个能量圈的状态。

不难发现这样转移是一棵树。

我们尝试下能否把\(dp_i\)表示成\(kdp_{last_i}+b\)的形式。

先假装这个结论成立,则:\(dp_i=1+p*dp_{last_i}+(1-p)*\frac{1}{|next_i|}*\sum (kdp_i+b)\)

为方便设\(A=(1-p)*\frac{1}{|next_i|}\)

则原式可以表示为:\(dp_i=1+p*dp_{last_i}+A*\sum (kdp_i+b)\)

移项下得:\(dp_i-A*\sum (k*dp_i)=p*dp_{last_i}+A*\sum b\)

把\(dp_i\)的系数化为\(1\),得:\(dp_i=\frac{p}{1-A*\sum k}*dp_{last_i}+\frac{1+A*\sum b}{1-A*\sum k}\)

这样\(dp_i\)就成功的化成了\(k*dp_{last_i}+b\)的形式了。

初始状态不存在\(last_i\),所以\(b\)就是答案。

注意没有能量圈的时候是必定不会损失能量圈的。

还有就是因为我们只关心\(k\)和\(b\)的值,所以在\(dfs\)只要记录\(min\)和总和即可,不必关心具体拥有的能量圈情况是什么,也不必求出\(dp_i\)具体的值。

#include<bits/stdc++.h>
#define For(i,x,y) for (register int i=(x);i<=(y);i++)
#define Dow(i,x,y) for (register int i=(x);i>=(y);i--)
#define cross(i,u) for (register int i=first[u];i;i=last[i])
using namespace std;
typedef long long ll;
inline ll read(){ll x=0;int ch=getchar(),f=1;while (!isdigit(ch)&&(ch!='-')&&(ch!=EOF)) ch=getchar();if (ch=='-'){f=-1;ch=getchar();}while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
}
struct node{double k,b;
};
int T,n,a[51];
double p;
inline node dfs(int sum,int Min){if (sum>T) return (node){0,0};double k=0,b=0;node t;For(i,1,Min) t=dfs(sum+a[i],i),k+=t.k,b+=t.b;double P=!sum?0:p,G=(1-P)*(1.0/Min);return (node){p/(1-G*k),(1+G*b)/(1-G*k)};
}
int main(){while (~scanf("%lf%d%d",&p,&T,&n)){For(i,1,n) a[i]=read();sort(a+1,a+1+n);printf("%0.3lf\n",dfs(0,n).b);}
}

转载于:https://www.cnblogs.com/zykykyk/p/9454604.html

Luogu P3251 [JLOI2012]时间流逝 期望dp相关推荐

  1. [JLOI2012]时间流逝

    Luogu P3251 [JLOI2012]时间流逝 期望dp 题目描述 (简化版) 每天有两种情况. 1.每天,你可以(1-P概率)得到一个能量圈,但是对于新得到的相同的能量圈,它的能量不能大于你已 ...

  2. luogu P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P4745 [CERC2017]Gambling Guide(期望DP + 最短路实现) Weblin ...

  3. WJMZBMR打osu! / Easy【期望dp】

    >Link luogu P1365 >Description 有一个长度为 n 的仅由ooo,xxx,???三个字符组成的字符串 设字符串的分数为:其中长度为 aaa 的只包含 ooo 的 ...

  4. [洛谷 1365] WJMZBMR打osu! / Easy {期望DP}

    题目 https://www.luogu.org/problemnew/show/P1365 解题思路 这是我做的第三道期望DP.跟前两道的不同之处,在于它连续的一段具有不确定性且没有给出n的范围.所 ...

  5. [洛谷CF235B] Let‘s Play Osu! {期望DP}

    题目 https://www.luogu.org/problemnew/show/CF235B 解题思路 跟[洛谷 1654] OSU! {期望DP}一样. 代码 #include<cstdio ...

  6. [SCOI2008]奖励关(期望dp)

    你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃). 宝 ...

  7. 【bzoj4318】OSU! 期望dp

    题目描述 osu 是一款群众喜闻乐见的休闲软件.  我们可以把osu的规则简化与改编成以下的样子:  一共有n次操作,每次操作只有成功与失败之分,成功对应1,失败对应0,n次操作对应为1个长度为n的0 ...

  8. 【loj6342】跳一跳 期望dp

    题目描述 一个人从 $1$ 开始向 $n$ 跳,在 $i$ 时会等概率跳到 $i,i+1,...,n$ 之一.求从 $1$ 跳到 $n$ 的期望步数. $n\le 10^7$ . 题解 期望dp傻逼题 ...

  9. 【高斯消元】兼 【期望dp】例题

    [总览] 高斯消元基本思想是将方程式的系数和常数化为矩阵,通过将矩阵通过行变换成为阶梯状(三角形),然后从小往上逐一求解. 如:$3X_1 + 2X_2 + 1X_3 = 3$ $           ...

最新文章

  1. 漫画:对象是如何被找到的?句柄 OR 直接指针?
  2. UpdateProgress使用
  3. prototype.js 让你更深入的了解javascript的面向对象特性
  4. c++ template(4)基本技巧
  5. python paramiko模块下载_Python自动化运维实战:使用Python管理网络设备
  6. 乘基取整法是什么_深入理解计算机系统(六):进制间的转换原理
  7. google lab 深度学习_吴恩达、李飞飞等化身超级英雄!深度学习漫画第一卷现已开源...
  8. 【OpenCV学习笔记】【函数学习】十二(cvCanny()函数及其阈值设置的比较)
  9. axure6.5汉化最新正式破解版本下载(有注册码)
  10. c语言编程串级控制,组态王-串级控制
  11. 计算机团队霸气名称大全,霸气吃鸡游戏团队名字大全
  12. clickhouse中bitmap在用户标签,访客去重生产中使用及clickhouse建表null值数据类型处理
  13. 如何测试一个一次性水杯
  14. 数字逻辑复习(Wust)
  15. Xu_Learning_to_Restore_Low-Light_Images_via_Decomposition-and-Enhancement_CVPR_2020_paper
  16. 【计算机网络】湖科大微课堂笔记 p7-10 计算机网络体系结构:常见的计算机网络体系结构、必要性、分层思想、专业术语
  17. 字符串流stringstream--<sstream>
  18. c++实现文件传输之三:断点续传与多线程传输
  19. SharpDevelop浅析_1_AddInTree
  20. 引路蜂技术博客论坛开放

热门文章

  1. SyntaxHighlighter Evolved高亮插件的编程语言及语言别名对照表
  2. 数据科学家技能地铁图
  3. 人大经济论坛:统计学的一些经典教材
  4. linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
  5. python错误代码40035_Python 创建XML
  6. 003_Color色彩
  7. 051_Unicode字符官方标准二
  8. 支付宝 php 返回false,支付宝php sdk验签rsaCheckV1不正确isSign一直返回false
  9. fpga驱动rgb液晶屏_正点原子开拓者FPGA开发板资料连载第五十四章基于的数字识别实验...
  10. 刘晓艳2021英语语法句型结构总结1之简单句型结构