题面

题面

题解

期望\(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);
}
}

Luogu P3251 [JLOI2012]时间流逝 期望dp的更多相关文章

  1. Luogu P1850 换教室(期望dp)

    P1850 换教室 题意 题目描述 对于刚上大学的牛牛来说,他面临的第一个问题是如何根据实际情况申请合适的课程. 在可以选择的课程中,有\(2n\)节课程安排在\(n\)个时间段上.在第\(i(1\l ...

  2. luogu 6046 纯粹容器 期望dp

    LINK:纯粹容器 一道比较不错的期望题目. 关键找到计算答案的方法. 容易发现对于每个点单独计算答案会好处理一点. 暴力枚举在第k轮结束统计情况 然后最后除以总方案数即可. 考虑在第k轮的时候结束 ...

  3. luogu P4321 随机漫游 期望dp 二进制 高斯消元

    LINK:随机漫游 非常妙的一道题. 容易想到倒推期望. 设状态 f[i][j]表示到达第i个点 此时已经到达的集合为j能走到全集的期望边数. 只要求出来这个就能O(1)回答询问. \(f[i][j] ...

  4. 【Luogu】P2473奖励关(期望DP)

    题目链接 逆推期望DP.设f[i][j]为1~i-1中吃到的宝物集合为j,在i~k轮能得到的最大期望分数. 如果不吃显然f[i][j]+=f[i+1][j]/n 如果吃就是f[i][j]+=max(f ...

  5. LUOGU P1291 [SHOI2002]百事世界杯之旅 (期望dp)

    传送门 解题思路 期望$dp$.因为这个是期望步数,所以要倒着推.那么这道题就变得一脸可做了,设$f[i]$表示还有$i$张牌没有收集的期望,那么考虑再抽一张,有$(n-i)/n$的概率抽到抽过的牌, ...

  6. luogu P3830 [SHOI2012]随机树 期望 dp

    LINK:随机树 非常经典的期望dp. 考虑第一问:设f[i]表示前i个叶子节点的期望平均深度. 因为期望具有线性性 所以可以由每个叶子节点的期望平均深度得到总体的. \(f[i]=(f[i-1]\c ...

  7. Luogu P1850 [NOIp2016提高组]换教室 | 期望dp

    题目链接 思路: <1>概率与期望期望=情况①的值*情况①的概率+情况②的值*情况②的概率+--+情况n的值*情况n的概率举个例子,抛一个骰子,每一面朝上的概率都是1/6,则这一个骰子落地 ...

  8. 期望$DP$ 方法总结

    期望\(DP\) 方法总结 这个题目太大了,变化也层出不穷,这里只是我的一点心得,不定期更新! 1. 递推式问题 对于无穷进行的操作期望步数问题,一般可用递推式解决. 对于一个问题\(ans[x]\) ...

  9. 概率和期望dp

    概率和期望dp 概率和期望好神啊,完全不会. 网上说概率要顺着推,期望要逆着推,然而我目前做的概率期望题正好都与此相反2333   概率: 关于概率:他非常健康 初中概率题非常恐怖.现在来思考一道题: ...

随机推荐

  1. JavaWeb-Servlet-Tomcat

    Servlet就是运行在服务器上的Java类.Servlet容器为javaweb应用提供运行时环境,负责管理Servlet和JSP的生命周期,以及管理它们的共享数据. Servlet容器软件——Tom ...

  2. basename命令详解

    基础命令学习目录首页 摘要:前言bashname命令用于获取路径中的文件名或路径名(获取的时候叶子节点的元素内容)常见用法举例basenamepath获取末尾的文件名或路径名1:[aliyunzixu ...

  3. 解决maven update project 后项目jdk变成1.5

    http://blog.csdn.net/jay_1989/article/details/52687934

  4. check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc

    往一个新建的MySQL表中插入数据报错 2018-08-22 14:09:18.875 ERROR 9256 --- [apr-8080-exec-9] o.s.b.w.servlet.support ...

  5. 20162327WJH第一次实验——线性结构

    20162327WJH第一次实验--线性结构 实 验 报 告 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 2分 指导教师:娄嘉鹏 王志强 ...

  6. spring冲刺第九天

    昨天使炸弹可以炸死人物并可以炸没砖块,并试着将小怪加入地图. 今天设计游戏的道具,比如吃了道具人物反方向运动等. 遇到的问题设计不够完善,道具单一.

  7. 读《我是IT小小鸟》有感

    我是一只IT小小鸟,我与IT结缘.书中是作者对个人经历与经验在IT下的体会,却给了我们很好的借鉴. IT这门行业,不仅仅再局限于如我们高中老师教学所要求的内容.IT更加开放,可以通过GitHub.CS ...

  8. 【贪心算法】POJ-1862 简单哈夫曼

    一.题目 Description Our chemical biologists have invented a new very useful form of life called stripie ...

  9. iOS App之间常用的五种通信方式及适用场景总结

    iOS系统是相对封闭的系统,App各自在各自的沙盒(sandbox)中运行,每个App都只能读取iPhone上iOS系统为该应用程序程序创建的文件夹AppData下的内容,不能随意跨越自己的沙盒去访问 ...

  10. 9th 本周工作量及进度统计

    本周psp C(类别) C(内容) S(开始时间) ST(结束时间) I(中断时间) T(实际时间) 文档 11月10日 Beta发布的评论 20:30 21:18 0:05 43 活动 11月12日 ...