HDU 3853 LOOPS 概率dp(水

水水过~

#include <stdio.h>
#include <cstring>
#include <iostream>
#include <map>
#include <cmath>
template <class T>
inline bool rd(T &ret) {
    char c; int sgn;
    if(c=getchar(),c==EOF) return 0;
    while(c!='-'&&(c<'0'||c>'9')) c=getchar();
    sgn=(c=='-')?-1:1;
    ret=(c=='-')?0:(c-'0');
    while(c=getchar(),c>='0'&&c<='9') ret=ret*10+(c-'0');
    ret*=sgn;
    return 1;
}
template <class T>
inline void pt(T x) {
    if (x <0) {
        putchar('-');
        x = -x;
    }
    if(x>9) pt(x/10);
    putchar(x%10+'0');
}
using namespace std;
typedef unsigned long long ull;
const double eps = 1e-10;
const int N = 1005;
int n, m;
double mp[N][N][3], dp[N][N];
double solve(){
	dp[n][m] = 0;
	for(int i = n; i ; i--)
		for(int j = m; j; j--)
		{
			if(i == n && j == m)continue;
			if(fabs(mp[i][j][0] - 1.0) < eps)
			{
				dp[i][j] = 0;
			}
			else
			{
				dp[i][j] = mp[i][j][1] * dp[i][j+1] + mp[i][j][2] * dp[i+1][j];
				dp[i][j] += 2.0;
				dp[i][j] /= (1 - mp[i][j][0]);
			}
		}
	return dp[1][1];
}
void input(){
	for(int i = 1; i <= n; i++)
		for(int j = 1; j <= m; j++)
			scanf("%lf %lf %lf", &mp[i][j][0], &mp[i][j][1], &mp[i][j][2]);
}
int main(){
    while(cin>>n>>m){
        input();
        printf("%.3f\n", solve());
    }
    return 0;
}
时间: 2024-10-03 06:49:35

HDU 3853 LOOPS 概率dp(水的相关文章

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

hdu 3853 LOOPS (概率dp 逆推求期望)

题目链接 LOOPS Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 125536/65536 K (Java/Others)Total Submission(s): 2630    Accepted Submission(s): 1081 Problem Description Akemi Homura is a Mahou Shoujo (Puella Magi/Magical Girl). Homura wants to h

HDU 3853 期望概率DP

期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y]->[x][y+1]=p[x][y][1];  左移:[x][y]->[x+1][y]=p[x][y][2]; 问最后走到[r,c]的期望 dp[i][j]为从[i][j]点走到[r][c]的期望 有方程: dp[i][j]=    (dp[i][j]+2)*p[i][j][0]  +   (dp

LOOPS HDU - 3853 (概率dp):(希望通过该文章梳理自己的式子推导)

题意:就是让你从(1,1)走到(r, c)而且每走一格要花2的能量,有三种走法:1,停住.2,向下走一格.3,向右走一格.问在一个网格中所花的期望值. 首先:先把推导动态规划的基本步骤给出来. · 1.设变量:(注意:设置变量时,要能够使整个求解过程可以分为多个阶段.) 2.分析阶段决策,并写出决策函数.(也就是能体现前阶段决策后阶段关系的函数) 3.写出指标函数.(也是就是我们得出解的函数.) 先第一步:设置变量,我们分析这个题的是从(1,1)到(r, c)那么什么能体现"阶段"这个

HDU 3853 LOOPS (期望DP)

题意:给定一个 n * m的矩阵,然后你从 (1,1)到 (n,m),每次你有三种可能,不动,向右,向下,每次要消耗2个魔法,并且给定每个概率, 问你走出去的期望. 析:dp[i][j] 表示从 (i,j)到终点的概率.然后一路逆推回去就好. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <

HDU 4576 Robot 概率DP 水题

Robot Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 102400/102400 K (Java/Others)Total Submission(s): 3851    Accepted Submission(s): 1246 Problem Description Michael has a telecontrol robot. One day he put the robot on a loop with n cells.

[ACM] hdu 3853 LOOPS (概率DP,递推)

LOOPS Problem Description 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

hdu 4870 Rating(概率DP&amp;高数消元)

Rating Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 714    Accepted Submission(s): 452 Special Judge Problem Description A little girl loves programming competition very much. Recently, she

HDU 4035Maze(概率DP)

HDU 4035   Maze 体会到了状态转移,化简方程的重要性 题解转自http://blog.csdn.net/morgan_xww/article/details/6776947 /** dp求期望的题. 题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) 2.找到出口,走出迷宫 (概率为ei) 3.和该点相连有m条边,随机走一条 求:走出迷宫所要走的边数的期望值. 设 E[i]表示