zoukankan      html  css  js  c++  java
  • LightOJ

    以前做过类似的题了 其实就是背包概率 然后找一个钱最多的即可

    题目链接

    #include <bits/stdc++.h>
    #define ll long long
    #define inf 0x3f3f3f3f
    using namespace std;
    const int N = 1e5+7;
    const double eps = 1e-6;
    double dp[10007];
    double a[107];
    int b[107];
    int main(){
    //    ios::sync_with_stdio(false);
    //    cin.tie(0);
        int t;
        scanf("%d",&t);
        int w=0;
        while(t--){
            memset(dp,0,sizeof(dp));
            double p; 
            int n;
            scanf("%lf%d",&p,&n);
            p=(1-p);
            int sum=0;
            for(int i=1;i<=n;i++){
                int m; double pi;
                scanf("%d%lf",&m,&pi);
                pi=1-pi;
                a[i]=pi;
                b[i]=m;
                sum+=m;
            }
            dp[0]=1;
            for(int i=1;i<=n;i++)
                for(int j=sum;j>=b[i];j--){
                    dp[j]=max(dp[j],dp[j-b[i]]*a[i]);
                }
            int ans;
            for(int i=0;i<=sum;i++){
                if(dp[i]-p>eps){
                    ans=i;
                }
            }
            printf("Case %d: %d
    ",++w,ans);
        }
    }
  • 相关阅读:
    十天冲刺4
    单词统计
    十天冲刺3
    学习进度第十周
    十天冲刺2
    十天冲刺1
    梦断代码阅读笔记03
    学习进度第九周
    [强网杯 2019]Upload
    [2020 新春红包题]1
  • 原文地址:https://www.cnblogs.com/wmj6/p/11197869.html
Copyright © 2011-2022 走看看