3 条题解

  • 0
    @ 2026-2-10 9:53:24
    #include<bits/stdc++.h>
    using namespace std;
    #define db double
    const int N=3100;
    db p[N],dp[N][N],ans;
    //dp[i][j]表示掷前i枚硬币后有j枚硬币正面朝上的概率 
    int main()
    {
    	int n;scanf("%d",&n);
    	for(int i=1;i<=n;i++)scanf("%lf",&p[i]);
    	memset(dp,0,sizeof dp);dp[0][0]=1.0;
    	for(int i=1;i<=n;i++)dp[i][0]=dp[i-1][0]*(1.0-p[i]);
    	for(int i=1;i<=n;i++)for(int j=1;j<=i;j++)
    		dp[i][j]=dp[i-1][j-1]*p[i]+dp[i-1][j]*(1.0-p[i]);
    	for(int i=n;i>=(n+1)/2;i--)ans+=dp[n][i];
    	printf("%.10lf",ans);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 16:58:06
      #include <bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      const int maxn=3005;
      int n;
      double a[maxn],f[maxn][maxn],ans;
      int main(){
          std::ios::sync_with_stdio(false);
          scanf("%d",&n);
          for(int i=1;i<=n;++i){
              scanf("%lf",&a[i]); 
          }
          f[0][0]=1;
          for(int i=1;i<=n;++i){
              f[i][0]=f[i-1][0]*(1-a[i]);
              for(int j=1;j<=i;++j){
                  f[i][j]=f[i-1][j-1]*a[i]+f[i-1][j]*(1-a[i]);
              }
          }
          for(int i=0;i<=n;++i){
              if(i>n-i){
                  ans+=f[n][i];
              }
          }
          printf("%.10lf",ans);
          return 0;
      }
      
      • 0
        @ 2025-10-8 16:57:57
        #include<bits/stdc++.h>
        using namespace std;
        typedef long long ll;
        const int maxn=3005;
        int n;
        double a[maxn],f[maxn][maxn],ans;
        int main(){
        	std::ios::sync_with_stdio(False);
        	scanf("%d",&n);
        	for(int i=1;i<=n;++i){
        		scanf("%lf",&a[i]); 
        	}
        	f[0][0]=1;
        	for(int i=1;i<=n;++i){
        		f[i][0]=f[i-1][0]*(1-a[i]);
        		for(int j=1;j<=i;++j){
        			f[i][j]=f[i-1][j-1]*a[i]+f[i-1][j]*(1-a[i]);
        		}
        	}
        	for(int i=0;i<=n;++i){
        		if(i>n-i){
        			ans+=f[n][i];
        		}
        	}
        	printf("%.10lf",ans);
        	return 0;
        }
        • 1

        信息

        ID
        1585
        时间
        2000ms
        内存
        1024MiB
        难度
        6
        标签
        递交数
        100
        已通过
        28
        上传者