您的位置:首页 > 其它

hdu 4800 Josephina and RPG(dp)

2015-11-14 21:10 363 查看
题目链接:hdu 4800 Josephina and RPG

代码

#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;
const int maxn = 10005;
const int maxm = 125;

int M;
double G[maxm][maxm], dp[maxn][maxm];

double solve () {
int n, x;
scanf("%d", &n);
for (int i = 0; i < M; i++) dp[0][i] = 1;

for (int i = 0; i < n; i++) {
scanf("%d", &x);
dp[i+1][x] = 0;
for (int j = 0; j < M; j++) {
double p = G[j][x];
if (j != x) dp[i+1][j] = dp[i][j] * p;
dp[i+1][x] = max(dp[i][j] * p, dp[i+1][x]);
}
}
double ans = 0;
for (int i = 0; i < M; i++) ans = max(ans, dp
[i]);
return ans;
}

int main () {
while (scanf("%d", &M) == 1) {
M = M * (M-1) * (M-2) / 6;
for (int i = 0; i < M; i++)
for (int j = 0; j < M; j++)
scanf("%lf", &G[i][j]);
printf("%.6lf\n", solve());
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: