zoukankan      html  css  js  c++  java
  • HDU 1203 I NEED A OFFER!(01 背包DP)

    点我看题目

    题意 : 中文题不详述。

    思路 :类似于01背包的DP,就是放与不放的问题,不过这个要求概率,至少得到一份offer的反面就是一份也得不到,所以先求一份也得不到的概率,用1减掉就可以得到所求。

    //HDU 1203
    #include <stdio.h>
    #include <iostream>
    using namespace std ;
    struct node
    {
        int a ;
        double b ;
    }p[101000] ;
    double dp[10100] ;
    int main()
    {
        int n,m ;
        while(~scanf("%d %d",&n,&m))
        {
            if(n == 0 && m == 0) break ;
            for(int i = 0 ; i < m ; i++)
                scanf("%d %lf",&p[i].a,&p[i].b) ;
            for(int i = 0 ; i <= n ; i++)
                dp[i] = 1 ;
            for(int i = 0 ; i < m ; i++)
            {
                for(int j = n ; j >= p[i].a ; j--)
                    dp[j] = min(dp[j-p[i].a]*(1-p[i].b),dp[j]) ;
            }
            printf("%.1lf%%
    ",(1-dp[n])*100) ;
        }
        return 0 ;
    }
    View Code
  • 相关阅读:
    docker commit
    镜像原理
    docker command1
    docker镜像命令
    docker work machine
    视图
    后台管理
    模型类
    docker command
    安装virtualenv
  • 原文地址:https://www.cnblogs.com/luyingfeng/p/3644977.html
Copyright © 2011-2022 走看看