CF24D Broken robot

Posted bztminamoto

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF24D Broken robot相关的知识,希望对你有一定的参考价值。

题意翻译

你收到的礼物是一个非常聪明的机器人,行走在一块长方形的木板上。不幸的是,你知道它是坏的,表现得相当奇怪(随机)。该板由n行和m列的单元格组成。机器人最初是在i行和j j列的某个单元格上。然后在每一步机器人可以到另一个单元。目的是去底层(n次)行。机器人可以停留在当前单元,向左移动,向右边移动,或者移动到当前下方的单元。如果机器人在最左边的列不能向左移动,如果它是在最右边的列不能向右移动。在每一步中,所有可能的动作都是同样可能的。返回步的预期数量达到下面的行。

 

一道好好地高斯消元被打成了暴力……

不难看出这是一个环形后效性的dp

然而我并不会……

于是打了个暴力,就是每一层在转移的时候多转移几次……

竟然过了……

虽然跑得很慢……但代码很短啊……

 1 //minamoto
 2 #include<cstdio>
 3 const int N=1005;
 4 double dp[N][N],d[N];
 5 int n,m,a,b;
 6 int main(){
 7     scanf("%d%d%d%d",&n,&m,&a,&b);
 8     for(int i=1;i<=m;++i){
 9         d[i]=2;
10         if(i>1) ++d[i];if(i<m) ++d[i];
11     }
12     for(int i=a+1;i<=n;++i)
13     for(int t=0;t<100;++t)
14     for(int j=1;j<=m;++j){
15         double Q=dp[i][j-1]+dp[i][j]+dp[i-1][j]+dp[i][j+1];
16         dp[i][j]=1.0+Q/d[j];
17     }
18     printf("%.10lf
",dp[n][b]);
19     return 0;
20 }

 

以上是关于CF24D Broken robot的主要内容,如果未能解决你的问题,请参考以下文章

CF24D Broken robot

CF24D Broken robot | DP 高斯消元

[Codeforces 24D] Broken Robot

题解CF#24 D-Broken Robots

Xcode 8 Autocomplete Broken - 仅显示有限的用户代码片段 - 知道为啥吗?

codeforces24D