题目链接: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)的更多相关文章

  1. 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 ...

  2. Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题

    除非特别忙,我接下来会尽可能翻译我做的每道CF题的题面! Codeforces 148D 一袋老鼠 Bag of mice | 概率DP 水题 题面 胡小兔和司公子都认为对方是垃圾. 为了决出谁才是垃 ...

  3. codeforces 768 D. Jon and Orbs(概率dp)

    题目链接:http://codeforces.com/contest/768/problem/D 题意:一共有k种球,要得到k种不同的球至少一个,q个提问每次提问给出一个数pi,问概率大小大于等于pi ...

  4. 2018.12.12 codeforces 935D. Fafa and Ancient Alphabet(概率dp)

    传送门 概率dp水题. 题意简述:给你数字表的大小和两个数列,数列中为0的数表示不确定,不为0的表示确定的,求第一个数列字典序比第二个数列大的概率. fif_ifi​表示第i ni~ ni n位第一个 ...

  5. Codeforces Round #105 D. Bag of mice 概率dp

    http://codeforces.com/contest/148/problem/D 题目意思是龙和公主轮流从袋子里抽老鼠.袋子里有白老师 W 仅仅.黑老师 D 仅仅.公主先抽,第一个抽出白老鼠的胜 ...

  6. Educational Codeforces Round 13 E. Another Sith Tournament 概率dp+状压

    题目链接: 题目 E. Another Sith Tournament time limit per test2.5 seconds memory limit per test256 megabyte ...

  7. CodeForces 54C-First Digit Law(数位,概率dp)

    题意: 给你n个区间,在每个区间里各取一个数(随机取),求这n个数中超过K%的数是首位为1数的概率 分析: dp[i][j]取前i个数,有j个是首位为1的数的概率 易知,dp[i][j]=dp[i-1 ...

  8. Codeforces 235B Let&#39;s Play Osu! 概率dp(水

    题目链接:点击打开链接 给定n表示有n个格子 以下每一个格子为O的概率是多少. 对于一段连续 x 个O的价值就是 x*x ; 问: 获得的价值的期望是多少. 思路: 把公式拆一下.. #include ...

  9. CodeForces 167B - Wizards and Huge Prize 期望概率dp

    初步分析:把赢了的巡回赛的a值加起来就是最后的剩余空间 这个明显的是状态转移的dp啊,然而他的状态比较骚是个数组,表示剩余空间,f(i,j,b),i表示比到第几场,j表示赢了几场,b就是里面的核心状态 ...

随机推荐

  1. 2级搭建类201-Oracle 12cR2 单实例 ASM(OEL7.7)公开

    项目文档引子系列是根据项目原型,制作的测试实验文档,目的是为了提升项目过程中的实际动手能力,打造精品文档AskScuti. 项目文档引子系列除特定项目目前不对外发布,仅作为博客记录,其他公开.如学员在 ...

  2. WPF实现高仿统计标题卡

    飘哇~~~,在家数瓜子仁儿,闲来无事,看东看西,也找点儿,最近正在看看WPF动画,光看也是不行,需要带着目的去学习,整合知识碎片,恰巧,看到Github中一个基于Ant Designer设计风格的后台 ...

  3. C#扩展枚举的别名

    C#扩展枚举的别名 用途: 提高代码的可读性. 打印到日志系统,方便于调试. 代码: 首先编写一个Attribute [AttributeUsage(AttributeTargets.Enum | A ...

  4. 获取redis指定实例中所有的key

    需求:获取redis指定的实例中所有的key的名字. 千万不要使用keys *,可以使用scan命令的递归方式获取. 以下给出自己写的脚本,经过测试效果还可以. db_ip=5.5.5.101 db_ ...

  5. UI中class的用法:

    easyui的引入:<link rel="stylesheet" type="text/css" href="easyui/themes/def ...

  6. asp.net web core 部署问题汇总

    记录所有部署时遇到的问题.    微软官网部署说明 转载自:.NET Core 3.0 构建和部署(测试过可以使用)   A    单文件可执行文件(文件体积较大,合并所有依赖)       asp. ...

  7. 我的python笔记05

    Python 之路 Day5 - 常用模块学习 本节大纲: 模块介绍 time &datetime模块 random os sys shutil json & picle shelve ...

  8. Facebook Create Done!

    前天,又一次开了VPN,建立了自己的Facebook! Facebook我用邮箱注册的,注册邮箱在这里: acmit1966@outlook.com Facebook上我就叫做 Jack Deng 在 ...

  9. main中的argv和argc

    int main(int argc,char* argv[]) 给程序传递命令行参数:第一个参数的值是第二个参数的数组元素个数,即统计运行程序时送给main函数的命令行参数个数. 第二个参数总是cha ...

  10. 番外:Oracle 中关于 Control File 的备份说明

    番外系列说明:该系列所有文章都将作为独立篇章进行知识点讲解,是对其他系列博文进行的补充说明,来自于博客园AskScuti. 主题:关于 Control File 控制文件备份的说明 内容预览:本篇涉及 ...