码迷,mamicode.com
首页 > 其他好文 > 详细

hdu 1203 01背包

时间:2015-07-14 20:21:38      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:

转化一下问题:求一个offer也拿不到的最小概率。

每个学校有个花费和概率,很显然是01背包问题。

 1 #include <cstdio>
 2 using namespace std;
 3 
 4 const int N = 10001;
 5 const double eps = 1e-8;
 6 double f[N];
 7 int n, m;
 8 
 9 double min( double a, double b )
10 {
11     if ( a + eps < b ) return a;
12     return b;
13 }
14 
15 int main ()
16 {
17     while ( scanf("%d%d", &n, &m) != EOF )
18     {
19         if ( n == 0 && m == 0 ) break;
20         for ( int i = 0; i <= n; i++ )
21         {
22             f[i] = 1.0;
23         }
24         for ( int i = 0; i < m; i++ )
25         {
26             int cost;
27             double p;
28             scanf("%d%lf", &cost, &p);
29             p = 1 - p;
30             for ( int j = n; j >= cost; j-- )
31             {
32                 f[j] = min( f[j], f[j - cost] * p );
33             }
34         }
35         f[n] = ( 1.0 - f[n] ) * 100.0;
36         printf("%.1lf%%\n", f[n]);
37     }
38     return 0;
39 }

 

hdu 1203 01背包

标签:

原文地址:http://www.cnblogs.com/huoxiayu/p/4646301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!