zoukankan      html  css  js  c++  java
  • hdu1203 I NEED A OFFER!

    http://acm.hdu.edu.cn/showproblem.php?pid=1203

    DP,0-1背包

    和0-1背包稍有差别:

    状态转移方程:dp[j] = max(dp[j], dp[j-w[i]]*v[i])

    P(至少一份offer) = 1 - P(一个offer也没有)

    P(一个offer也没有) = Mul(1 - P(拿到 i 学校的offer))  (其中i为选择的学校)

    #include <stdio.h>
    #define N 10010
    
    int n, m;
    float dp[N], v[N];
    int w[N];
    
    int main()
    {
        int i, j;
        while(scanf("%d%d", &m, &n), m||n)
        {
            for(i=1; i<=n; i++)
            {
                scanf("%d %f", w+i, v+i);
                v[i] = 1 - v[i];
            }
            for(i=0; i<=m; i++)
            {
                dp[i] = 1.0;
            }
            for(i=1; i<=n; i++)
            {
                for(j=m; j>=w[i]; j--)
                {
                    if(dp[j-w[i]]*v[i] < dp[j])
                    {
                        dp[j] = dp[j-w[i]]*v[i];
                    }
                }
            }
            printf("%.1f%%\n", (1-dp[m])*100);
        }
        return 0;
    }
  • 相关阅读:
    2019学期第十周编程总结
    2019学期第九周编程总结
    第七次作业
    第六次作业
    第五次作业
    jsp第四次作业
    3.10
    3.4
    3.3jsp作业
    最后一次安卓作业
  • 原文地址:https://www.cnblogs.com/yuan1991/p/hdu1203.html
Copyright © 2011-2022 走看看