01概率

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

如果求得到offer的最小可能,等价于1-求没有可能的解。

多个概率是相乘。//坑爹的题目,居然有n=0或m=0成立的情况。之前偷懒只判断n等于零WA了好多次

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cstdio>
 4 #include<cstring>
 5 #include<cmath>
 6 #include<queue>
 7 #define mem(a) memset(a,0,sizeof(a))
 8 using namespace std;
 9 
10 int main()
11 {
12    int a[10005],n,m;
13    while(cin>>n>>m)
14    {
15      if(n==0&&m==0)break;
16      double b[10005],f[10005];
17      for(int i=1;i<=m;i++)
18      {
19          scanf("%d%lf",&a[i],&b[i]);
20         b[i]=1-b[i];
21      }
22      for(int i=0;i<=n;i++)
23         f[i]=1;
24      for(int i=1;i<=m;i++)
25      {
26          for(int j=n;j>=a[i];j--)
27          {
28              f[j]=min(f[j],f[j-a[i]]*b[i]);
29          }
30      }
31 
32      printf("%.1lf%%
",(1.0-f[n])*100);
33    }
34    return 0;
35 }
View Code
原文地址:https://www.cnblogs.com/XXrll/p/10187085.html