动态规划—概率dp
文章平均质量分 71
My_ACM_Dream
生活没有彩排每天都是现场直播
展开
-
hdu 4336 Card Collector(状态压缩概率dp)
题意:给出n中卡片,并且给出买零食能获得每种卡片的概率,问凑齐n中卡片要买零食的包数的期望。题解:n那么方程的推导如下:状态推导:初始方程: dp[s] = (1-sum(p[i]))*dp[s] + sum(p[j])*dp[s] + sum(p[k])*dp[s|(1<<k)];其中: i=0、1、2、3、4、5......n 1-sum(p[i])表示没有原创 2015-01-25 19:30:42 · 525 阅读 · 0 评论 -
sdut 2623 The number of steps (概率dp)
题意:一个金子塔型的迷宫,一个人在金子塔的定点,现在要走到金子塔的左下角,给出了这个人走左边的们,左下角的们,右下角的门,对应的概率,现在问这个人走到金子塔左下角步数的期望。题解:直接搞,E[i][j],表示位置i,j步数的期望,然后倒推,最终答案E[1][n]。很简单的一道概率dp。#include#include#include#include#include#inc原创 2015-04-07 16:26:20 · 500 阅读 · 0 评论 -
FJUTOJ 校赛J 第十集 原来这一切都是真的 (树形概率dp)
题意:有n个点组成的树,叶子节点是门,门有守卫的概率是这个点的编号/n,如果一个点连接的门的守卫个数或者路口的守卫个数时奇数那么这个点要设置一个守卫,问0也就是树根没有守卫的概率。题解:dp[u]表示树上节点u有守卫的概率,对于某个点u,以及儿子v,dp[u]=(1-dp[u])*dp[v]+dp[u]*(1-dp[v]),此时dp[u]可以表示在到v这个儿子为止守卫是奇数的概率(也就原创 2015-04-15 11:29:43 · 643 阅读 · 0 评论 -
acdream 1092 EOF女神的打地鼠游戏 (概率dp)
题意:ACdream的群主EOF女神(EndofFile)很喜欢玩打地鼠游戏,作为女神,肯定不能像正常人去玩这个看似普通的游戏。EOF女神站在直角坐标系的原点上,不移动。游戏开始后,某一时刻t[i]在坐标(x[i],y[i])处会出现一只地鼠,地鼠十分敏捷,只在这一个时刻出现,马上就消失,EOF作为女神,当然不屑于用锤子去打地鼠,她用念力组成的锤子去打地鼠(Orz…),由于功力有限,女原创 2015-05-09 17:18:49 · 926 阅读 · 0 评论 -
codefroces 482C Game with Strings (概率dp神题)
题意:给出n个字符串,选择每个字符串的概率等同都是1/n,每个字符串的长度相同。现在要玩一个游戏,就是A去任意藏起来一个字符串,B通过询问这个字符串的某个位置是什么字符,然后来判断这个字符串是什么。问:询问问题的数量的期望是多少。题解:一看题目,无法下手,堪称神题啊。大牛正解:dp[s]表示状态为s的时候到问出这个字符串是什么还需要的概率,s中存的是问题。p[i]表示询问了i个问题原创 2015-02-14 16:14:59 · 650 阅读 · 0 评论 -
codeforces 398B Painting The Wall (概率dp)
题意:给出n*n的格子,现在要给每个格子砌砖,题目给出了已经砌好砖的格子坐标。砌砖直到每行每列都至少有一个砖块停下。每次要选择这些格子中的一个取砌砖,如果已经有砖就放弃。每次操作都要休息时间为一个单位,砌砖不需要时间。问完成目标砌砖时间的期望。题解:事实上并不一定要知道砖块的位置,或者按一定方式去砌砖。我们可以抽象的这样理解,砌了i行的砖,砌了j列的砖,那么dp[i][j]表示还有i行原创 2015-02-11 20:32:02 · 702 阅读 · 0 评论 -
codeforces 54C First Digit Law (数位dp+概率dp+背包模型)
题意:给出n个区间,然后每个区间中取任何数的概率都是1/(r-l+1),现在问n个区间任意的组成的任意集合,求某个集合满足里面的数首位是1的个数大于k的概率。题解:说起来很绕,读了一个小时也没读懂啊!不看题解的翻译根本读不懂题目啊!我严重怀疑出题人的英语水平。不过是一道好题,首先要得到区间中首位为1的数字个数要数位dp或者组合数学,然后就是背包模型的概率dp,因为要求任意字集合满足原创 2015-02-11 14:34:43 · 915 阅读 · 0 评论 -
codeforces 167B Wizards and Huge Prize (概率dp,类似背包)
题意:给出n个比赛,每个比赛都有赢的概率pi,并且能得到一定的钱,但是钱需要背包装,比赛赢了分两个情况:一个是获得金币,一个是将背包扩容,如果值为-num表示得到num的金币,如果是正表示背包扩容。问至少赢了l局并且背包能装下的最大概率。题解:很明显的概率dp,类似于背包,和之前做的比起来简直简单爆了。两个决策一个取一个不去。dp[i][j][k]表示前i个比赛赢了j个比赛还剩的容原创 2015-02-07 14:46:49 · 673 阅读 · 0 评论 -
codeforces 464D World of Darkraft - 2 (概率dp)
题意:一个人去玩world Darkraft2这个游戏,他有k个装备栏,每个装备初始时的装备等级都是1,假设现在的某个装备栏的装备等级是j,每次打一个怪兽会随机获得某个装备栏中对应的装备(获得概率相同),并且会随机得到[1,j+1]之间等级的装备,当然这个人会选择最好的装备留下。换下来的装备就会卖掉,装备的价格等于等级数。问这个人获得的金币数的期望是多少?题解:见注释 dp[i][j]原创 2015-02-20 17:09:06 · 660 阅读 · 0 评论 -
codeforces 30C Shooting Gallery (概率dp)
题意:给出n个会定时出现的靶子,每个靶子给出出现的时间坐标和能打中概率,问打中靶子数的期望最大值。题解:简单的概率dp,dp[i]表示以i为结尾打中靶子数期望的最大值。注意精度!#include#include#include#include#include#include#includeusing namespace std;typedef long long l原创 2015-02-09 20:09:06 · 637 阅读 · 0 评论 -
zoj 3582 Back to the Past (概率dp)
题意给出一个余光宝盒(汗!)左右都有n个洞,每个洞亮的概率相同为p 求至少剩下m等的期望四重循环枚举,暴力dp设dp[i][j]表示左边i个亮,右边j个亮到达目标的期望#include#include#include#include#include#include#include#include#include#includeusing namespace s原创 2014-12-05 00:31:41 · 510 阅读 · 0 评论 -
hdu 4870 Rating (概率dp)
题意:给出一个人升级的流程,对于每次操作如果rank在1-200那么rating会涨min(x+50,1000),否则ranting会涨(x-100,0)相当于减rating。rank在1-200的范围的概率是p。求rating达到1000操作数的期望。题解在注释里。其实可以离散化,将x+50,1000,x-100,0离散化,就是x+1,20,x-2,0;/**对于单个账号的期望原创 2015-03-13 21:26:43 · 529 阅读 · 0 评论 -
hihoCoder 1075 开锁魔法III (dp,划分阶段)
题意:一日,崔克茜来到小马镇表演魔法。其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅有一把钥匙能打开它。初始时,崔克茜将会随机地选择 k 个盒子用魔法将它们打开。崔克茜想知道最后所有盒子都被打开的概率,你能帮助她回答这个问题吗?题解:我们发现对于打开盒子会形成环,当打开一个盒子时会得到某个盒子的钥匙,不断打开最后回到起始盒子,这样就可原创 2015-03-30 00:18:48 · 588 阅读 · 0 评论 -
codeforces 424E Colored Jenga (状态压缩,概率dp用hash记忆优化搜索)
题意:给出以最多6层的积木,每层可以由三个木块拼成,总共有三种颜色的木块,开始时给出了积木的排列情况,我们每次可以从积木中抽一块木块,抽木块的规则是投骰子,骰子分别投到red,blue,green,的概率为1/6,1/3,1/3.每次投骰子都要花费一分钟,如果投到的颜色不存在就等一分钟不操作。注意的是要保证不能从顶部抽,并且抽木块时不能让整个积木倒了,要保证不倒中间的木块必须存在,每次抽出的木原创 2015-03-11 15:07:21 · 1079 阅读 · 0 评论 -
Codeforce148D(概率dp)
题意:给出w个白球b个黑球,公主和龙没人轮流去球,当然公主要最先取,最先取出白球的赢。求:公主赢的概率。题解:状态方程:dp[i][j]+=1.0*i/(i+j);dp[i][j]+=dp[i][j-3]*j/(i+j)*(j-1)/(i+j-1)*(j-2)/(i+j-2); if(j>=3)dp[i][j]+=dp[i-1][j-2]*j/(i+j)*(j-1)/(i+j-原创 2015-01-25 11:49:26 · 498 阅读 · 0 评论 -
hdu3853(简单概率dp)
说是简单做题来还是不顺手,第一道概率dp#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef __int64 lld;#define ep 1e-9#define oo 0x3f3f3f3f#defi原创 2014-12-05 00:01:47 · 545 阅读 · 0 评论 -
hdu 4035 Maze (树形概率dp)
题意:给出一棵树,每个点都有两个概率,一个是回到原点的概率,一个是走出去的概率,然后人从原点(1)开始走。求:走出去之前走的步数的期望。题解:觉得这题很难,看了大牛的推导才做出来。推导如下:转子kuangbin设 E[i]表示在结点i处,要走出迷宫所要走的边数的期望。E[1]即为所求。 叶子结点: E[i] = ki*E[1] + ei*0 + (1-ki原创 2015-01-24 21:44:52 · 541 阅读 · 0 评论 -
poj2955(区间dp)
枚举长度和起点,终点自然固定。#include#include#include#include#include#include#include#includeusing namespace std;#define maxn 105int dp[maxn][maxn];char str[maxn];bool match(int i, int j){ if (st原创 2014-11-29 01:20:33 · 590 阅读 · 0 评论 -
zoj 3640 Help Me Escape(概率dp[记忆搜索])
题意:一个人,想走出一个困境,每次他都可以从n条路中选择一条路,每条路选择的概率是一样的,并且每次的n条路都一样,每条路都有一个值c[i],当且仅当这个人的力量大于c[i]时才能选择这条路。那么问题来了:求这个人逃出困境的期望。题解:状态:dp[v] = sum{ ti/n }, v > c[i]dp[v] = sum{ (dp[v+c[i]] + 1)/n }, v观察容原创 2015-01-25 17:50:42 · 517 阅读 · 0 评论 -
hdu2151(概率dp)
这题表示概率算不来,貌似这和高中没半毛钱关系,0 0. 不会算概率是硬伤。设置状态dp[i][j][k] 前i个队在前j道题目中解除k道题的考虑状态方程:dp[i][j][k] = dp[i][j - 1][k - 1] * p[i][j] + dp[i][j - 1][k] * (1.0 - p[i][j]);设置是s[i][j] 表示第i队做出j道题的概率公式我原创 2014-12-05 00:03:02 · 472 阅读 · 0 评论 -
hdu 4089 Activation(概率dp)
莫名其妙的内存超了。。。。/**转自kuangbin概率DP;设dp[i][j]表示i个人排队,Tomato排在第j个位置,达到目标状态的概率(j<=i)dp[n][m]就是所求j==1: dp[i][1]=p1*dp[i][1]+p2*dp[i][i]+p4;2<=j<=k: dp[i][j]=p1*dp[i][j]+p2*dp[i][j-1]+p3*dp[i-1][j-1原创 2015-01-25 10:03:06 · 529 阅读 · 0 评论 -
hdu 4405 Aeroplane chess(概率dp)
题意:一个n个点的路,有的路有直通车可以直接到达所给的目的地,没有直通车时要通过掷骰子来决定走几步,骰子6个面每个面的概率相同。求:到达终点之投骰子的次数的期望。题解:状态dp[i]表示到i点到终点投骰子次数的期望。#include#include#include#include#includeusing namespace std;//typedef __原创 2015-01-24 16:04:48 · 429 阅读 · 0 评论 -
ZOJ 3329 One Person Game(概率dp)
题意:有三个骰子,分别有k1,k2,k3个面。每次掷骰子,如果三个面分别为a,b,c则分数置0,否则加上三个骰子的分数之和。当分数大于n时结束。求游戏的期望步数。初始分数为0题解:转自:kuangbin#include#include#include#include#includeusing namespace std;//typedef __int64 lld;原创 2015-01-24 14:02:35 · 469 阅读 · 0 评论 -
poj 2096 Collecting Bugs(概率dp)
题意:给出n,s分别表示有s个系统,每个系统有n个bug求n个bug每种系统都有bug的天数的期望题解:转自:大牛博客#include#include#include#include#includeusing namespace std;//typedef __int64 lld;#define oo 0x3f3f3f3f#define Mod 10000000原创 2015-01-24 12:15:34 · 642 阅读 · 0 评论 -
uva 1358 Generator (kmp,dp(高斯消元解法))
题意:给出一个n,表示可以从26个字母的前n个中任意选取,然后给出一个串A,问生成的串包含A长度的期望。题解:这题dp方程比较容易出来dp[i]表示匹配了i长度的期望。if(s[i+1]==c) dp[i] = dp[i+1] * p;else dp[i] = dp[lost(k)] * p;由于会形成环,所以用高斯消元搞,这题无法用double,应为容易损失精度,只能用分原创 2015-05-07 22:08:52 · 601 阅读 · 0 评论