http://acm.hdu.edu.cn/showproblem.php?pid=4711

真的是坑吐血了,wa了5次  最后实在无语 把long long double 改成long double 就过了

#include <map>
#include <set>
#include <list>
#include <ctime>
#include <cmath>
#include <queue>
#include <stack>
#include <bitset>
#include <vector>
#include <cstdio>
#include <cctype>
#include <string>
#include <cstring>
#include <sstream>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#define PI 3.1415926535897932384626433832795
using namespace std;
const int N = 110;
const double INF = 1e50;
const double EPS = 1e-14; int T, n, m, w;
int ord[1010];
double pm[N][N], pw[N][N];
long double dp[1010][N];
int fa[1010][N]; int main()
{
scanf("%d", &T);
while(T--)
{
scanf("%d%d%d", &n, &m, &w);
for(int i = 0; i < n; ++i) scanf("%d", ord + i);
for(int i = 0; i < m; ++i)
for(int j = 0; j < m; ++j)
{
scanf("%lf", &pm[i][j]);
if(pm[i][j] > EPS) pm[i][j] = log(pm[i][j]);
else pm[i][j] = -INF;
}
for(int i = 0; i < m; ++i)
for(int j = 0; j < w; ++j)
{
scanf("%lf", &pw[i][j]);
if(pw[i][j] > EPS) pw[i][j] = log(pw[i][j]);
else pw[i][j] = -INF;
} for(int i = 0; i < m; ++i) dp[n-1][i] = pw[i][ord[n-1]];
for(int i = n - 2; i >= 0; --i)
{
for(int j = 0; j < m; ++j) dp[i][j] = -INF;
for(int j = 0; j < m; ++j)
{
for(int k = 0; k < m; ++k)
{
if(dp[i][j] < dp[i+1][k] + pm[j][k] + pw[j][ord[i]])
{
dp[i][j] = dp[i+1][k] + pm[j][k] + pw[j][ord[i]];
fa[i][j] = k;
}
}
}
} int pos = 0;
long double best = -INF;
for(int i = 0; i < m; ++i)
if(best < dp[0][i] + pm[0][i])
{
best = dp[0][i] + pm[0][i], pos = i;
}
printf("%d", pos);
for(int i = 0; i < n-1; ++i)
printf(" %d", pos = fa[i][pos]);
printf("\n");
}
return 0;
}

hdu 4711 Weather概率dp的更多相关文章

  1. HDU 3853LOOPS(简单概率DP)

    HDU 3853    LOOPS 题目大意是说人现在在1,1,需要走到N,N,每次有p1的可能在元位置不变,p2的可能走到右边一格,有p3的可能走到下面一格,问从起点走到终点的期望值 这是弱菜做的第 ...

  2. HDU - 1099 - Lottery - 概率dp

    http://acm.hdu.edu.cn/showproblem.php?pid=1099 最最简单的概率dp,完全是等概率转移. 设dp[i]为已有i张票,还需要抽几次才能集齐的期望. 那么dp[ ...

  3. HDU 4405 【概率dp】

    题意: 飞行棋,从0出发要求到n或者大于n的步数的期望.每一步可以投一下筛子,前进相应的步数,筛子是常见的6面筛子. 但是有些地方可以从a飞到大于a的b,并且保证每个a只能对应一个b,而且可以连续飞, ...

  4. HDU 4576 Robot(概率dp)

    题目 /*********************复制来的大致题意********************** 有N个数字,M个操作, 区间L, R. 然后问经过M个操作后落在[L, R]的概率. * ...

  5. HDU 4599 Dice (概率DP+数学+快速幂)

    题意:给定三个表达式,问你求出最小的m1,m2,满足G(m1) >= F(n), G(m2) >= G(n). 析:这个题是一个概率DP,但是并没有那么简单,运算过程很麻烦. 先分析F(n ...

  6. [HDU 4089]Activation[概率DP]

    题意: 有n个人排队等着在官网上激活游戏.Tomato排在第m个. 对于队列中的第一个人.有以下情况: 1.激活失败,留在队列中等待下一次激活(概率为p1) 2.失去连接,出队列,然后排在队列的最后( ...

  7. hdu 3853 LOOPS 概率DP

    简单的概率DP入门题 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> #include ...

  8. HDU 3853 期望概率DP

    期望概率DP简单题 从[1,1]点走到[r,c]点,每走一步的代价为2 给出每一个点走相邻位置的概率,共3中方向,不动: [x,y]->[x][y]=p[x][y][0] ,  右移:[x][y ...

  9. HDU 3366 Passage (概率DP)

    题意:T组测试数据,一个人困在了城堡中,有n个通道,m百万money ,每个通道能直接逃出去的概率为 P[i] ,遇到士兵的概率为 q[i], 遇到士兵得给1百万money,否则会被杀掉,还有 1-p ...

随机推荐

  1. 结构体的sizeof

    首先有几条规则: 1. 结构体的成员相对于结构体的偏移量,是该成员所包含的最大简单类型(指占用内存数)的整数倍(如果该成员本身又是一个结构体,就要递归查找其简单类型,简单类型就是char short ...

  2. svn add后的数据如何取消-svn revert??--zz

    svn add后的数据如何取消-svn revert?? 有时候你发现svn add后,这个提交的数据又不需要了.这时候需要有svn revert来处理了. 原文链接:http://hi.baidu. ...

  3. 代码中实际运用memcached——java

    以下文章取自:http://jameswxx.iteye.com/blog/1168711 memcached的java客户端有好几种,http://code.google.com/p/memcach ...

  4. Qemu之Network Device全虚拟方案三: I/O虚拟化

    前面两文主要对前端网络流的数据路径和虚拟网卡的创建进行了说明,这些能够看做是Guest OS网络数据包收发的准备工作,那么网络数据包是怎样在Guest OS中进进出出的呢,本文就是重点讲述Guest ...

  5. kvm 图形化安装

    为了再后续查看方便,我还是完整的记录kvm图形化安装. 介于网络环境的原因,我选择NAT. 2,安装kvm前的准备工作 2.1 关闭防火墙  setenforce 0    vi /etc/sysco ...

  6. Mysql的安装(二进制免编译包) 5.1版本

    一,Mysql的安装: 1.下载mysql,可以通过http://mirrors.sohu.com/下载mysql软件. wget http://mirrors.sohu.com/mysql/MySQ ...

  7. T4 模板 vs2010

    参阅:http://dotnet.cnblogs.com/page/78398/ T4模板的定义非常简单,整个模板的内容包括两种形式:静态形式和动态动态.前者就是直接写在模板中作为原样输出的文本,后者 ...

  8. 【TFS】增加组员,以及用户权限分配

    一.创建windows用户. 二.TFS ->组成员资格->双击 项目集合管理员->添加创建的Windows用户(最高权限) 三.设置权限: TFS权限的复杂,其实也不是很复杂,它只 ...

  9. localStorage和sessionStorage火狐浏览器和其他高级浏览器的区别

    例子: <script>window.onload=function(){ var oSetData = document.getElementById('setData'); var o ...

  10. Android 打开系统相册和系统视

    1.打开系统相册 Intent intent = new Intent(Intent.ACTION_VIEW); intent.setType("vnd.android.cursor.dir ...