首页 > 其他 > 详细

HDU 1203 I NEED A OFFER!(01 背包DP)

时间:2014-04-05 02:32:26      阅读:306      评论:0      收藏:0      [点我收藏+]

点我看题目

题意 : 中文题不详述。

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

bubuko.com,布布扣
bubuko.com,布布扣
//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%%\n",(1-dp[n])*100) ;
    }
    return 0 ;
}
View Code
bubuko.com,布布扣

 

HDU 1203 I NEED A OFFER!(01 背包DP),布布扣,bubuko.com

HDU 1203 I NEED A OFFER!(01 背包DP)

原文:http://www.cnblogs.com/luyingfeng/p/3644977.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!