1023-W专题三

来源:互联网 发布:查了啊高清网络电视 编辑:程序博客网 时间:2024/04/30 01:15

1.题号:1023-W

2.题意:Speakless有n万美元。m个学校都有不同的申请费用a(万美元),并且他得到这个学校offer的可能性b。计算他可以收到至少一份offer的最大概率。

3.思路:这个题是一种反向求解,  至少一个  反过来就是一个也没有,用1减去一个也没有的概率就是至少一个的概率,从而转化为DP问题求解。

4.感想:这个是一种思维方式,不过还是中文题看的比较顺,


AC代码

#include<stdio.h>#include<iostream>using namespace std;double dp[10005],p[10005];int a[10005];int main(){    int n,i,j,m;    while(cin>>n>>m)    {      if(m==0&&n==0)          break;      for(i=1;i<=m;i++)      {          cin>>a[i]>>p[i];          p[i]=1-p[i];        }      for(i=0;i<=n;i++)        dp[i]=1.0;          for(i=1;i<=m;i++)            for(j=n;j>=a[i];j--)            {                  if(dp[j]>dp[j-a[i]]*p[i])                  dp[j]=dp[j-a[i]]*p[i];            }              printf("%.1lf%%\n",(1-dp[n])*100);    }    return 0;}


0 0
原创粉丝点击