CF1245E:Hyakugoku and Ladders

题意描述:

  • 给你一个\(10*10\)的矩阵,矩阵描述如下

    • 最开始的时候你在左下角,你的目标是到达左上角。
    • 你可以走路径或者爬梯子。
    • 路径的定义:
      • 如果当前在一行的最右边,你可以网上爬一格。
      • 如果在行内其他位置,你可以往旁边走。
    • 每一回合你都要掷一个六面的骰子,假设当前骰子的正面为\(r\)。如果到终点的距离小于\(r\),那么你将不能移动。否则你将移动\(r\)格,如果你最后移动到的位置有一个梯子,你可以选择爬上去或者不怕上去。
  • 你的目标是找到到达目的的回合的最小期望。

思路:

  • 期望\(dp\)。
  • 在二维上不是很方便,我们可以把二维看成一个一维数组。
  • \(f(i)\)表示到\(i\)需要多少回合。如果没有梯子的限制,那么有状态转移方程:
    • \(f(i)=\frac{f(i-1)+f(i-2)+...+f(i-6)}{6}+1\)
  • 那么有了梯子,我们只需要针对梯子转移过来的情况取\(min\)即可。
#include<bits/stdc++.h>
using namespace std;
const int maxn = 15;
int g[maxn][maxn];
int nex[maxn][maxn];
int a[maxn*maxn];
double f[maxn*maxn];
int main()
{
for(int i = 1; i <= 10; i++)
for(int j = 1; j <= 10; j++)
nex[i][j] = (i-1)*10 + (i&1 ? j : 11-j); for(int i = 1; i <= 10; i++)
for(int j = 1, x; j <= 10; j++){
scanf("%d", &x);
a[nex[i][j]] = nex[i-x][j];
} f[1] = 0;
double sum = 0;
for(int i = 2; i <= 6; i++)
f[i] = (sum+6) / (i-1), sum += f[i]; for(int i = 7; i <= 100; i++)
{
sum = 0;
for(int r = 1; r <= 6; r++)
sum = sum + min(f[i-r], f[a[i-r]]);
f[i] = sum / 6.0 + 1;
} printf("%.10f", f[100]);
return 0;
}

CF1245E:Hyakugoku and Ladders的更多相关文章

  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. POJ2564:Edit Step Ladders

    浅谈\(Trie\):https://www.cnblogs.com/AKMer/p/10444829.html 题目传送门:http://poj.org/problem?id=2564 记\(f[i ...

  3. codeforces 597 div2 E. Hyakugoku and Ladders(概率dp)

    题目链接:https://codeforces.com/contest/1245/problem/E 题意:有一个10x10的网格,左下角是起点,左上角是终点,从起点开始,如图所示蛇形走到终点,每一步 ...

  4. Codeforces 1245 E. Hyakugoku and Ladders

    传送门 显然这个图是个 $DAG$ ,那么就可以考虑跑 $dp$ 了 先考虑没有梯子的情况,首先把每个位置标号,越后面的位置编号越小,终点位置编号为 $1$ 那么从终点往起点 $dp$ ,枚举当前位置 ...

  5. 并不对劲的CF1245E&F:Cleaning Ladders

    CF1245 E. Hyakugoku and Ladders 题目大意 有一个10 \(\times\) 10的网格,你要按这样的路径行走: 网格中有一些单向传送门,每个传送门连接的两个格子在同一列 ...

  6. Edit Step Ladders - UVA 10029

    题意 题目链接(Virtual Judge):Edit Step Ladders - UVA 10029 题意: 如果单词 \(x\) 能通过添加.删除或修改一个字母变换为单词 \(y\),则称单词 ...

  7. Codeforces Round #597 (Div. 2)

    A - Good ol' Numbers Coloring 题意:有无穷个格子,给定 \(a,b\) ,按以下规则染色: \(0\) 号格子白色:当 \(i\) 为正整数, \(i\) 号格子当 \( ...

  8. some problem

    CF1257F Make Them Similar $solution:$ 折半搜索后考虑如何维护两个数组的和,可以将 $A$ 中每个数减 $A_1$ ,$B$ 中每个数被减 $B_1$ ,$map$ ...

  9. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

随机推荐

  1. 另一种缓存,Spring Boot 整合 Ehcache

    用惯了 Redis ,很多人已经忘记了还有另一个缓存方案 Ehcache ,是的,在 Redis 一统江湖的时代,Ehcache 渐渐有点没落了,不过,我们还是有必要了解下 Ehcache ,在有的场 ...

  2. Linux下安装Python3.6.8并安装包

    一.问题在Linux下面安装Python3.6.8,由于在Linux中的Python是2.7.x的版本因此,我们需要在Linux中新下载一个Python 二.解决1.python的安装(1)下载包利用 ...

  3. dotnet验证参数

    组长提了一个需求,前端传递过来参数的时候,我们要验证一下参数是否都传递过来了,所以我专门写了一个验证工具类,调用就好了. 第一个参数为 前端传递到Controller封装的实体类,第二个参数为这个实体 ...

  4. 使用Net Mail发送邮件

    最近用到了发送邮件这个功能,简单记录一下案例.代码如下: using System; using System.Collections.Generic; using System.Linq; usin ...

  5. NetCoreApi框架搭建三、JWT授权验证)

    1.首先还是粘贴大神的链接 虽然说大神的博客已经讲得很详细了,但是此处还是自己动手好点. 首先配置Startup Swagger的验证 2.新建一个项目存放tokenmodel和生成token并且存入 ...

  6. 一文读懂Java线程状态转换

    前言 本文描述Java线程线程状态及状态转换,不会涉及过多理论,主要以代码示例说明线程状态如何转换. 基础知识 1. 线程状态 Thread源码中的状态说明: 线程可以有6种状态: New(新建) R ...

  7. Winform中实现根据配置文件重新加载ZedGraph属性的实现思路

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  8. webpack详细介绍以及配置文件属性!

    1.webpack简单介绍 (1)webpack是一个用于实现前端模块化开发工具,可帮助我们自动打包编译成浏览器能够识别的代码 :同时支持commonjs规范 以及es6的import规范: 同时具备 ...

  9. Objective-C的self.用法

    转自:http://mobile.51cto.com/iphone-313096.htm 进入正题, 我们经常会在官方文档里看到这样的代码: MyClass.h @interface MyClass ...

  10. Spring Cloud 微服务实战笔记

    Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...