题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1203
题意:
Speakless有n万元,m所学校
输入每所学校的申请费用,以及拿到该所学校offer的概率
求至少得到一所学校offer的概率
解题思路:
至少得到一所 = 1 - 全得不到
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
struct node
{
int ai;
double bi;
}p[10005];
double d[10005];
int main()
{
int n,m;
while(~scanf("%d%d",&n,&m))
{
if(n==0 && m==0) break;
for(int i=0;i<=n;i++)
d[i]=1;
for(int i=0;i<m;i++)
{
scanf("%d%lf",&p[i].ai,&p[i].bi);
p[i].bi = 1-p[i].bi;
}
for(int i=0;i<m;i++)
{
for(int j=n;j>=p[i].ai;j--)
{
d[j] = min(d[j],d[j-p[i].ai]*p[i].bi);
}
}
double res = (1-d[n])*100;
printf("%.1lf%%\n",res);
}
return 0;
}