codeforces 597 div2 E. Hyakugoku and Ladders(概率dp)
题目链接:https://codeforces.com/contest/1245/problem/E
题意:有一个10x10的网格,左下角是起点,左上角是终点,从起点开始,如图所示蛇形走到终点,每一步走的时候要摇骰子,骰子是几就走几步,但是到终点前的那6步,骰子必须是直接到终点的步数才能走过去,否则原地停留,题中还有一个条件,可能有一些网格上存在梯子,你可以直接沿着梯子到更高的一行,求从起点到终点的最小平均摇骰子的次数。
题解:这是一道明显的概率dp题,dp[i]表示到第i格子终点所需的期望,从后往前枚举。
考虑终点前的六个方格,每次只能是骰子 = 到终点的步数才能移动,所以前六格的dp[i] = 6。
剩余的方格就是用期望dp的套路解决,因为骰子有六种可能,枚举每次可以达到的这六种状态就行,每个状态都乘一个1/6,因为每次到达的方格可能直接沿梯子走到更靠上的方格x,所以这直接等价于梯子可以上去的方格dp[x] , 假设我要走step步,每次两者 dp[i-step]和dp[x] 相比要取一个min去更新dp[i]。
最终转移方程为 dp[i] = min(dp [ i-step ],dp[index[i-step] ] )
AC代码:
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cstdio>
#define inf 0x3f3f3f3f
using namespace std;
typedef long long ll;
const int maxn = 1e2+5;
int index[15][15],grid[maxn];
double dp[maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
for(int i = 0;i<10;i++){
for(int j = 0;j<10;j++){
if(i%2 == 0) index[i][j] = i*10 + j;
else index[i][j] = i*10+(9 - j); //给方格构造一个index值,从0-99
}
}
for(int i = 0;i<10;i++){
for(int j = 0;j<10;j++){
int t;
cin>>t;
if(t == 0) grid[index[i][j]] = index[i][j];
else grid[index[i][j]] = index[i-t][j];//记录每个方格的index值,梯子能上去的方格
//两者index相等
}
}
dp[0] = 0;
for(int i = 1;i<=6;i++) dp[i] = 6;
for(int i = 7;i<100;i++){
double sum = 0;
for(int j = 1;j<=6;j++){
sum = sum + min(dp[i-j],dp[grid[i-j]]);//状态转移方程
}
dp[i] = (sum/6)+1;
}
printf("%.10lf",dp[99]);
return 0;
}
codeforces 597 div2 E. Hyakugoku and Ladders(概率dp)的更多相关文章
- Codeforces Round #597 (Div. 2) E. Hyakugoku and Ladders 概率dp
E. Hyakugoku and Ladders Hyakugoku has just retired from being the resident deity of the South Black ...
- Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题
除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...
- codeforces 768 D. Jon and Orbs(概率dp)
题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi ...
- 2018.12.12 codeforces 935D. Fafa and Ancient Alphabet(概率dp)
传送门 概率dp水题. 题意简述:给你数字表的大小和两个数列,数列中为0的数表示不确定,不为0的表示确定的,求第一个数列字典序比第二个数列大的概率. fif_ifi表示第i ni~ ni n位第一个 ...
- Codeforces Round #105 D. Bag of mice 概率dp
http://codeforces.com/contest/148/problem/D 题目意思是龙和公主轮流从袋子里抽老鼠.袋子里有白老师 W 仅仅.黑老师 D 仅仅.公主先抽,第一个抽出白老鼠的胜 ...
- Educational Codeforces Round 13 E. Another Sith Tournament 概率dp+状压
题目链接: 题目 E. Another Sith Tournament time limit per test2.5 seconds memory limit per test256 megabyte ...
- CodeForces 54C-First Digit Law(数位,概率dp)
题意: 给你n个区间,在每个区间里各取一个数(随机取),求这n个数中超过K%的数是首位为1数的概率 分析: dp[i][j]取前i个数,有j个是首位为1的数的概率 易知,dp[i][j]=dp[i-1 ...
- Codeforces 235B Let's Play Osu! 概率dp(水
题目链接:点击打开链接 给定n表示有n个格子 以下每一个格子为O的概率是多少. 对于一段连续 x 个O的价值就是 x*x ; 问: 获得的价值的期望是多少. 思路: 把公式拆一下.. #include ...
- CodeForces 167B - Wizards and Huge Prize 期望概率dp
初步分析:把赢了的巡回赛的a值加起来就是最后的剩余空间 这个明显的是状态转移的dp啊,然而他的状态比较骚是个数组,表示剩余空间,f(i,j,b),i表示比到第几场,j表示赢了几场,b就是里面的核心状态 ...
随机推荐
- CSS 美化网页元素
一.为什么使用CSS 1.有效的传递页面信息 2.使用CSS美化过的页面文本,使页面漂亮.美观,吸引用户 3.可以很好的突出页面的主题内容,使用户第一眼可以看到页面主要内容 4.具有良好的用户体验 二 ...
- 一个扩展搜索API的优化过程
概述 API 是一个服务的门面,就像衣装是人的形象一样. 优雅的 API 设计,能让业务方使用起来倍儿爽,提升开发效率,降低维护成本:糟糕的 API 设计,则让业务方遭心,陷入混沌. 本文将展示一个扩 ...
- ZDialog关闭父窗口、往父窗口传值、刷新父窗口
关闭自己 //关闭自己 top.Dialog.close(); 关闭父窗口 //关闭父窗口 parentDialog.parentWindow.close() 往父窗口传值 //在本页面,调用父页面方 ...
- WSO2 ESB XML定义语法(3)
6.Property Mediator 通过Synapse调解的每条消息都可以具有一组关联的属性.Synapse引擎和底层传输在处理的每条消息上设置了许多属性,用户可以操纵这些属性来修改消息流的运行时 ...
- Vue+ESLint+Git钩子函数pre-commit配置教程
一.创建Vue项目eslint-standard vue create eslint-standard 二.创建.eslintrc.* 删除package.json中的eslintConfig配置 我 ...
- Django---Django初始
现在测试行业慢慢的也需要存在代码能力了,从以前的点点点到通过工具进行测试接口,到目前的自动化测试,需要测试会代码的越来越多了.慢慢的测试开发这一行业出现在我们的面前,测试不仅仅会点点,还能自己帮助开发 ...
- mybatis(五):源码分析 - sqlsource创建流程
- ASP.NET Identity系列教程-1目录
https://www.cnblogs.com/hao-1234-1234/p/8857437.html ASP.NET Identity系列教程 13 Getting Started with Id ...
- 添加一个layer
let testLayer = new TestLayer1();this.addChild(testLayer); let TestLayer1 = cc.Layer.extend({ ctor:f ...
- JavaScript的严格检查模式
JavaScript的严格检查模式 前提:IDEA设置为ECMAScript 6语法. 'use strict':严格检查模式,用来预防JS的随意性导致的问题. 比如:直接 i=1;这样定义成了全局变 ...