LOOPS

Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl).

Homura wants to help her friend Madoka save the world. But because of the plot of the Boss Incubator, she is trapped in a labyrinth called LOOPS. 

The planform of the LOOPS is a rectangle of R*C grids. There is a portal in each grid except the exit grid. It costs Homura 2 magic power to use a portal once. The portal in a grid G(r, c) will send Homura to the grid below G (grid(r+1, c)), the grid on the right of G (grid(r, c+1)), or even G itself at respective probability (How evil the Boss Incubator is)! 
At the beginning Homura is in the top left corner of the LOOPS ((1, 1)), and the exit of the labyrinth is in the bottom right corner ((R, C)). Given the probability of transmissions of each portal, your task is help poor Homura calculate the EXPECT magic power she need to escape from the LOOPS.

InputThe first line contains two integers R and C (2 <= R, C <= 1000).

The following R lines, each contains C*3 real numbers, at 2 decimal places. Every three numbers make a group. The first, second and third number of the cth group of line r represent the probability of transportation to grid (r, c), grid (r, c+1), grid (r+1, c) of the portal in grid (r, c) respectively. Two groups of numbers are separated by 4 spaces.

It is ensured that the sum of three numbers in each group is 1, and the second numbers of the rightmost groups are 0 (as there are no grids on the right of them) while the third numbers of the downmost groups are 0 (as there are no grids below them).

You may ignore the last three numbers of the input data. They are printed just for looking neat.

The answer is ensured no greater than 1000000.

Terminal at EOF

OutputA real number at 3 decimal places (round to), representing the expect magic power Homura need to escape from the LOOPS.

Sample Input

2 2
0.00 0.50 0.50    0.50 0.00 0.50
0.50 0.50 0.00    1.00 0.00 0.00

Sample Output

6.000

题意: R 行 C 列的迷宫,起点 (1,1) ,终点(R,C) ,然后给出每个格子的留在原地的概率,向右的概率,向下的概率,走一步 2 的魔法,问能逃出去的耗费的魔法期望

题解:一般做法,dp [i][j] 代表从(i,j)逃出去的魔法消耗期望,值得注意的是如果这点停在原地概率为 1 的话,这点的 dp[][]值应该为 0 ,因为不能进去,进去就是死,要求的是能逃得出的魔法消耗期望

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <math.h>
 5 using namespace std;
 6 #define MAXN 1005
 7 const double eps = 1e-8;
 8
 9 struct Pro
10 {
11     double s;
12     double r;
13     double d;
14 }p[MAXN][MAXN];
15
16 int n,m;
17 double dp[MAXN][MAXN];
18
19 int main()
20 {
21     while (scanf("%d%d",&n,&m)!=EOF)
22     {
23         for (int i=1;i<=n;i++)
24             for (int j=1;j<=m;j++)
25                 scanf("%lf%lf%lf",&p[i][j].s,&p[i][j].r,&p[i][j].d);
26         memset(dp,0,sizeof(dp));
27         for (int i=n;i>=1;i--)
28         for (int j=m;j>=1;j--)
29         {
30             if (i==n&&m==j) continue;
31             if (1-p[i][j].s<eps) continue;    //如果在这点必死,则dp值继续保持 0 代表不能来
32             dp[i][j]=(p[i][j].r*dp[i][j+1]
33                      +p[i][j].d*dp[i+1][j]
34                      +2)/(1-p[i][j].s);
35         }
36         printf("%.3lf\n",dp[1][1]);
37     }
38     return 0;
39 }

时间: 2024-08-11 00:51:22

LOOPS的相关文章

USACO 4.1 Fence Loops(Floyd求最小环)

Fence Loops The fences that surround Farmer Brown's collection of pastures have gotten out of control. They are made up of straight segments from 1 through 200 feet long that join together only at their endpoints though sometimes more than two fences

Sort merge join、Nested loops、Hash join(三种连接类型)

目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接): 首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed table需要的数据,然后对这些数据按照与driving table对应的连接操作列进行排序:最后两边已经排序的行被放在一起执行合并操作.排序是一个费时.费资源的操作,特别对于大表.所以smj通常不是一个特别有效的连接方法,但是如果driving table和probed table都已经预先排序

洛谷P2738 [USACO4.1]篱笆回路Fence Loops

P2738 [USACO4.1]篱笆回路Fence Loops 11通过 21提交 题目提供者该用户不存在 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 农夫布朗的牧场上的篱笆已经失去控制了.它们分成了1~200英尺长的线段.只有在线段的端点处才能连接两个线段,有时给定的一个端点上会有两个以上的篱笆.结果篱笆形成了一张网分割了布朗的牧场.布朗想将牧场恢复原样,出于这个考虑,他首先得知道牧场上哪一块区域的周长最小. 布朗将他的每段篱笆从1到N进行了标号

[Javascript] Lodash: Refactoring Simple For Loops (_.find, _.findLast, _.filter)

This lesson shows how to refactor your old loops into using a simpler and more powerful lodash-style. We will start by looking at how many people traditionally write JavaScript for loops and then talk about the alternate style and benefits that Lodas

hdu3853——LOOPS

LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 2707    Accepted Submission(s): 1119 Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help

ansible(七)Conditionals 和 loops,自定义loops插件

ansible的Conditionals 和 loops 和salt-stack比起来真的太强大了.   salt-stack使用判断循环,好像,只能使用模板里面的判断和循环. 而ansible本身自带了适用于各种场景的判断循环插件.. 不但如此,像loops,我们还可以自己编写插件,满足我们的实际需求. 先说说Conditionals吧 Conditionals相对loops来说,简单,就一个关键字when 和咱们其他的程序语言的条件判断一个样,when 后面也是加一个bool值,或者bool

NESTED LOOPS &amp; HASH JOIN &amp; SORT MERGE JOIN

表连接方式及使用场合 NESTED LOOP 对于被连接的数据子集较小的情况,nested loop连接是个较好的选择.nested loop就是扫描一个表,每读到一条记录,就根据索引去另一个表里面查找,没有索引一般就不会是 nested loops.一般在nested loop中, 驱动表满足条件结果集不大,被驱动表的连接字段要有索引,这样就走nstedloop.如果驱动表返回记录太多,就不适合nested loops了.如果连接字段没有索引,则适合走hash join,因为不需要索引. 可用

hdu3853 LOOPS

HDU - 3853 LOOPS 题意:r*c的网格,人在左上角,出口在右下角 人有三种选择,不走,向下走,向右走,每种选择都有一定的概率,每种选择都会花费2魔力值 问到达出口的期望魔力值 /* dp[i][j]表示从(i,j)到出口的期望值 */ #include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,m; double dp[1010][1010],v[1010

HDU 3853:LOOPS

LOOPS 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3853 题意: 有一个网格,从点(1,1)开始走,要走到点(n,m),点(X,Y)可以走到点(X,Y),(X,Y+1),(X+1,Y),概率分别为p0,p1,p2,每走一步耗费2点魔力,求走到终点所耗费的魔力的期望 题解: 一道简单的求期望的题,不会求期望的可以看下这里 具体公式如下: dp[i][j]=p[i][j][0]*dp[i][j]+p[i][j][1]*dp[i][j+1]+

HDU 3853 LOOPS (概率dp)

LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others) Total Submission(s): 2931    Accepted Submission(s): 1209 Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to help