51nod 1705 七星剑

来源:互联网 发布:知味襄阳9月15日 编辑:程序博客网 时间:2024/06/02 10:26

期望DP转移,正着来。

#include<bits/stdc++.h>using namespace std;const int MAXN=110;const double eps=1e-8;const double INF=1e100;double prob[10][MAXN],suc[10],c[MAXN],dp[10][MAXN];int lose[10][MAXN];int main(){int n,i,j;while(~scanf("%d",&n)){for(i=1;i<=n;i++)scanf("%lf",&c[i]);for(i=1;i<=7;i++)for(j=1;j<=n;j++)scanf("%lf",&prob[i][j]);for(i=1;i<=7;i++)for(j=1;j<=n;j++)scanf("%d",&lose[i][j]);suc[0]=0;for(i=1;i<=7;i++){for(j=1;j<=n;j++){if(prob[i][j]<eps)dp[i][j]=INF;elsedp[i][j]=suc[i-1-lose[i][j]]+(c[j]+suc[i-1]-suc[i-1-lose[i][j]])/prob[i][j];}suc[i]=INF;for(j=1;j<=n;j++)suc[i]=min(dp[i][j],suc[i]);if(suc[i]==INF){suc[7]=INF;break;}}if(suc[7]==INF)printf("-1\n");elseprintf("%.10f\n",suc[7]);}}


原创粉丝点击