在某次考试的时候用过的办法,懒人必备……【笑哭】

  一个非常显然的 dp,我们用 \(f[i][j]\) 表示第 \(i\) 行第 \(j\) 列的格子走到最后一排的期望步数转移即为

\(f[i][j] = \frac{f[i][j - 1] + f[i][j + 1] + f[i + 1][j] + f[i][j]}{4} + 1\)

略微的化一下简:

\(f[i][j] = \frac{f[i][j - 1] + f[i][j + 1] + f[i + 1][j] + 4}{3}\)

  (当然,对于 j = 1 和 j = m 的情况是另外两个式子,但推导的方法是一样的)。这个式子使用高斯消元优化一下就能搞定,然而非常悲伤,像我这样的蒟蒻写高斯消元常常写挂,也不是很敢码。那怎么办办呢?人工大法好啊!

  我们可以注意到行与行之间是不会相互转移的,我们可以认为当前行的 dp 数组为 f,下一行的 dp 数组为 g。那么对于 \(f[i][m]\) 而言,我们有

\(f[m] = \frac{f[m - 1] + g[m] + 3}{2}\)

也就是说,我们可以用 \(f[i - 1]\) 来表示出 \(f[i]\) 的值!

那么每从 \(f[j] -> f[j - 1]\),我们都可以得到一个递推式

\(f]j] = k * f[j - 1] + t\)

那么这个式子递归到尽头 f[1] 的时候

我们陡然发现式子中的未知数只剩下了一个 f[1]!

此时,只需不断回代就能得到 f[2 ... m]。

  复杂度 \(O(n * m)\) ,非常优秀是吧~

#include <bits/stdc++.h>
using namespace std;
#define maxn 1050
#define db double
int n, m, S, T;
db f[maxn][maxn]; int read()
{
int x = , k = ;
char c; c = getchar();
while(c < '' || c > '') { if(c == '-') k = -; c = getchar(); }
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * k;
} void DP(int p, int x, db k, db t)
{
if(!x) return;
if(x == )
{
f[p][x] = (f[p + ][x] + 3.0 + t) / (2.0 - k);
return;
}
db k1 = / (3.0 - k), t1 = (f[p + ][x] + 4.0 + t) / (3.0 - k);
DP(p, x - , k1, t1);
f[p][x] = f[p][x - ] * k1 + t1;
} int main()
{
n = read(), m = read(), S = read(), T = read();
for(int i = n - ; i >= ; i --)
{
db k = 0.5, t = 0.5 * (3.0 + f[i + ][m]);
DP(i, m - , k, t);
if(m == ) f[i][m] = f[i + ][m] + 2.0;
else f[i][m] = k * f[i][m - ] + t;
}
printf("%.10lf\n", f[S][T]);
return ;
}

【题解】CF#24 D-Broken Robots的更多相关文章

  1. CF 24 D. Broken robot

    D. Broken robot 链接. 题意: 一个方格,从(x,y)出发,等价的概率向下,向左,向右,不动.如果在左右边缘上,那么等价的概率不动,向右/左,向下.走到最后一行即结束.求期望结束的步数 ...

  2. 【题解】CF24D Broken Robots(收敛性)

    [题解]CF24D Broken Robots http://codeforces.com/problemset/problem/24/D 解1(不会写,口胡的) 获得一个比较显然的转移式子 \(dp ...

  3. [Codeforces-div.1 24D] Broken robots

    [Codeforces-div.1 24D] Broken robots 试题分析 显然设\(f_{i,j}\)为到\((i,j)\)的期望步数,将转移表达式列出来. 首先自己跟自己的项消掉. 然后规 ...

  4. 竞赛题解 - CF Round #524 Div.2

    CF Round #524 Div.2 - 竞赛题解 不容易CF有一场下午的比赛,开心的和一个神犇一起报了名 被虐爆--前两题水过去,第三题卡了好久,第四题毫无头绪QwQ Codeforces 传送门 ...

  5. 题解——CF Manthan, Codefest 18 (rated, Div. 1 + Div. 2) T5(思维)

    还是dfs? 好像自己写的有锅 过不去 看了题解修改了才过qwq #include <cstdio> #include <algorithm> #include <cst ...

  6. 竞赛题解 - [CF 1080D]Olya and magical square

    Olya and magical square - 竞赛题解 借鉴了一下神犇tly的博客QwQ(还是打一下广告) 终于弄懂了 Codeforces 传送门 『题目』(直接上翻译了) 给一个边长为 \( ...

  7. Codeforces Beta Round #24 D. Broken robot (打表找规律)

    题目链接: 点击我打开链接 题目大意: 给你 \(n,j\),再给出 \(m[0]\) 的坐标和\(a[0]-a[n-1]\) 的坐标. 让你输出 \(m[j]\) 的坐标,其中 \(m[i]\) 和 ...

  8. [题解] [CF 1250J] The Parade

    题面 题目大意: 给定一个 \(n\) , 所有军人的数量均在 \([1, n]\) 给定 \(a_i\) 代表高度为 \(i\) 的军人的个数 你要将这些军人分成 \(k\) 行, 满足下面两个条件 ...

  9. 题解 CF 1372 B

    题目 传送门 题意 给出 \(n\),输出 \(a\) ,\(b\) (\(0 < a \leq b < n\)),使\(a+b=n\)且 \(\operatorname{lcm}(a,b ...

随机推荐

  1. netty之粘包分包的处理

    1.netty在进行字节数组传输的时候,会出现粘包和分包的情况.当个数据还好,如果数据量很大.并且不间断的发送给服务器,这个时候就会出现粘包和分包的情况. 2.简单来说:channelBuffer在接 ...

  2. Chrome模拟平板调试

    1. 按F12,打开开发者工具,右上角,点击红圈中的标志.然后在弹出的面板中点击'Emulation'. 2. 会看到左侧的四个选项卡  Device 设备.Screen 屏幕.User Agent ...

  3. 卷积神经网络CNN在自然语言处理中的应用

    卷积神经网络(Convolution Neural Network, CNN)在数字图像处理领域取得了巨大的成功,从而掀起了深度学习在自然语言处理领域(Natural Language Process ...

  4. xencenter迁移云主机方法

    问题:POOL中计算节点内存不足. 解决方法:1.为计算节点添加内存(费用高)2.将部分资源迁移到其它POOL中. 方法: 1.选择要迁移的虚拟机 2.选择保存路径 这里可以看到可以批量导出: 注意: ...

  5. VS Help Viewer 显示内容为HTML源码的问题

    万恶的IE10 为了学习,安装了一套Windows Server 2012+SQL 2012+VS 2012的环境,整体感觉还不错,只是在使用Help Viewer查看帮助的时候,发现显示内容居然为H ...

  6. 百度地图标注及结合ECharts图谱数据可视化

    本示例中根据企业位置经纬度,在页面右侧百度地图中标注企业名称.同时页面左侧ECharts图谱饼状图用于统计企业行业与注册资本.当右侧百度地图缩放拖拽,左侧ECharts图谱根据右侧地图上出现的企业动态 ...

  7. Firefox-css-hack

    先记下:之后研究.试了一下,新版本FF-32.0效果不错,低版本还没测试. @-moz-document url-prefix() { .container { ... }}

  8. 校招小白机考入坑之从键盘输入java的各种数据类型

    //1.从键盘输入一个整型(其他基本类型类似) Scanner sc =new Scanner(System.in); sc.hasNextInt(); int str1 = sc.nextInt() ...

  9. Nodejs Express笔记

    Express做服务器,主要考虑到可能存在的高并发,js写起来也并不麻烦,环境搭建也异常简单.开车~ 由于主要目的就是用于生产环境,所以肯定不能用高版本的Nodejs,选LTS,没错的. 一.安装 这 ...

  10. 2018java开发一些面经

    算法系列:https://www.cnblogs.com/yanmk/p/9232908.html 2018Java开发面经(持续更新) 不要给自己挖坑!!!不要给自己挖坑!!!不要给自己挖坑!!!如 ...