今天更完这题结束吧,明天多校爆零ε唉.(这题和前面3个题目.
然后打多校的时候,每天更一篇就好了...4天结束数论.
这题是个概率题,很简单的maybe.题目意思啥的都不解释了.
直接上代码:

#include <bits/stdc++.h>
using namespace std;
const int N=205;
double dp[N][N][N<<1];//到了第几次,赢了几次,背包容量为多少.
double p[N];
int a[N];
int n,l,k;//n次比赛,至少赢l次,初始有k的包包.
int f(int x)
{
    x=min(x,n);//节省容量.
    return x+200;//防止负数出现
}

int main()
{
    cin>>n>>l>>k;
    dp[0][0][f(k)]=1.0;
    for(int i=1;i<=n;i++)
    {
        cin>>p[i];
        p[i]/=100.0;
    }
    for(int i=1;i<=n;i++)   cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<=i;j++)
        {
            for(int k=1-i;k<=n;k++)
            {
                dp[i][j][f(k+a[i])]+=dp[i-1][j-1][f(k)]*p[i];
                dp[i][j][f(k)]+=dp[i-1][j][f(k)]*(1-p[i]);
            }
        }
    }
    double ans=0.0;
    for(int i=l;i<=n;i++)
    {
        for(int j=0;j<=n;j++)
        {
            ans+=dp[n][i][f(j)];
        }
    }
    printf("%.6lf\n",ans);
    return 0;
}