Millionaire

1,日常看懂题不知道咋做。

2,日了这东西学不下去了

这简直太难了,我看不出来啊。。除非背代码。。

memset(prv,0,sizeof(double)*(n+1));

而且这个地方不知道为什么总是不行。

因为你要用的是

#include<string.h>

3,搞得才把第一遍弄出来

#include<iostream>
#include<algorithm>
#include<string.h>
typedef long long ll;
using namespace std;
int M,X;
double P;
double dp[2][1000005];
int main(){
    cin>>M>>P>>X;
    int n=1<<M;
    
    double *prv=dp[0];
    double *nxt=dp[1];
    memset(prv,0,sizeof(double)*(n+1));
    prv[n]=1.0;
    
    for(int r=0;r<M;r++)
    {
        for(int i=0;i<=n;i++)
        {
            int jub=min(i,n-i);
            double t=0.0;
            for(int  j=0;j<=jub;j++)
            {
                t=max(t,P*prv[i+j]+(1-P)*prv[i-j]);
            }
            nxt[i]=t;
        }
        swap(prv,nxt);
    }
    int i=(ll)X*n/1000000;
    printf("%.6f
",prv[i]);
} 

 你忘了当时dp就没咋学啊。。。

原文地址:https://www.cnblogs.com/beiyueya/p/12286983.html