hdoj 3203 Door Repairing

原创 2012年03月31日 08:51:15
类型:DP

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3203

来源:2009 Shanghai Invitation Contest Host by DHU

思路:设状态dp(i, 0)表示第i个人来之前门坏,到结束时的最小花费,dp(i, 1)表示第i个人来之前门好,到结束时的最小花费。

当第i个人来之前门坏时,YY有两种选择,修或者不修,得到两种状态,dp(i + 1, 0) + b 和 a + p * dp(i + 1, 0) + (1.0 - p) * dp(i + 1, 1)

当第i个人来之前门好时,只有一种情况[按概率是否踢坏门],p * dp(i + 1, 0) + (1.0 - p) * dp(i + 1, 1)

初始化:f[n][0] = min(a, b), f[n][1] = 0

逆推求解

参考:http://www.cnblogs.com/zcwwzdjn/archive/2012/02/25/2367364.html
// hdoj 3203 Door Repairing
// ac 46MS 1796K
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;

const int MAXN = 100010;
int n, d, a, b, i;
double p, f[MAXN][2];

int main() {
    while (scanf("%d %d %d %d", &n, &d, &a, &b) != EOF, n || d || a || b) {
        p = d / 100.0;
        if (n <= 1)
            printf("%.4lf\n", 0.0);
        else {
            f[n][0] = min(a, b), f[n][1] = 0;
            for (i = n - 1; i >= 1; i --) {
                f[i][0] = min(f[i + 1][0] + b, a + p * f[i + 1][0] + (1.0 - p) * f[i + 1][1]);
                f[i][1] = p * f[i + 1][0] + (1.0 - p) * f[i + 1][1];
            }
            printf("%.4lf\n", f[1][1]);
        }
    }
    return 0;
}




相关文章推荐

POJ3216--Repairing Company

Description Lily runs a repairing company that services the Q blocks in the city. One day the c...
  • a305657
  • a305657
  • 2013年08月01日 13:14
  • 442

poj 3216 Repairing Company 最小路径覆盖

题意: gei
  • sepNINE
  • sepNINE
  • 2014年11月13日 21:47
  • 346

toj 4611 Repairing a Road

toj 4611 Repairing a Road 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte 总提交: 49 测试通过:...

POJ 3216 Repairing Company(FLOYD+DAG最小路径覆盖)

POJ 3216 Repairing Company(FLOYD+DAG最小路径覆盖) http://poj.org/problem?id=3216 题意:        给出Q的街道和M个任务 然后...

Effectively Repairing Windows 2003 Server

Effectively Repairing Windows 2003 Server Posted by decipherinfosys on February 16, 2007 Every n...

POJ 3216 Repairing Company (floyd + 最小路径覆盖)

题目链接:http://poj.org/problem?id=3216 题意:有n个城市,m个任务,每一个任务有所在城市和开始时间以及持续时间,城市间有路径,通过路径需要花费时间,问最小需要...

Repairing a Road

2010省赛题:Repairing a Road Floyd
  • logch
  • logch
  • 2016年06月24日 13:39
  • 677

POJ3216——Repairing Company

Repairing Company Time Limit: 1000MS   Memory Limit: 131072K Total Submissions: 6325...

UVA 11883 Repairing a Road (最短路+三分)

题意:
  • qian99
  • qian99
  • 2014年05月01日 19:08
  • 631

Upgrading and Repairing PCs, 21st Edition

  • 2014年03月09日 01:35
  • 21.33MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdoj 3203 Door Repairing
举报原因:
原因补充:

(最多只允许输入30个字)