[期望DP] UOJ#311. 【UNR #2】积劳成疾

来源:互联网 发布:美国7月非农数据 编辑:程序博客网 时间:2024/05/18 02:40

题意

这里写图片描述

题解

我太菜了……
看官方题解吧:
这里写图片描述

#include<cstdio>#include<algorithm>using namespace std;typedef long long LL;const LL maxn=405, MOD=998244353;int n,m,w[maxn];LL p[maxn][maxn],f[maxn][maxn];int main(){    freopen("uoj311.in","r",stdin);    freopen("uoj311.out","w",stdout);    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++) scanf("%d",&w[i]);    for(int i=1;i<=n;i++){        p[i][0]=1;        for(int j=1;j<=n;j++) p[i][j]=p[i][j-1]*w[i]%MOD;    }    for(int i=0;i<=n;i++) f[1][i]=p[1][max(0,i-m+1)];    for(int i=2;i<=n;i++)     for(int j=0;j<=n;j++){        f[i][j]=f[i-1][j];        for(int k=1;k<=j;k++){            int t=max(0,m-max(0,m-k)-max(0,m-(j-k+1)));            (f[i][j]+=f[i-1][k-1]*p[i][t]%MOD*f[i][j-k]%MOD)%=MOD;        }     }    printf("%lld\n",f[n][n]);    return 0;}