zoukankan      html  css  js  c++  java
  • HDU 1203 I NEED A OFFER!

    题目:

    Problem Description
    Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学校了。要申请国外的任何大学,你都要交纳一定的申请费用,这可是很惊人的。Speakless没有多少钱,总共只攒了n万美元。他将在m个学校中选择若干的(当然要在他的经济承受范围内)。每个学校都有不同的申请费用a(万美元),并且Speakless估计了他得到这个学校offer的可能性b。不同学校之间是否得到offer不会互相影响。“I NEED A OFFER”,他大叫一声。帮帮这个可怜的人吧,帮助他计算一下,他可以收到至少一份offer的最大概率。(如果Speakless选择了多个学校,得到任意一个学校的offer都可以)。
     
    Input
    输入有若干组数据,每组数据的第一行有两个正整数n,m(0<=n<=10000,0<=m<=10000)
    后面的m行,每行都有两个数据ai(整型),bi(实型)分别表示第i个学校的申请费用和可能拿到offer的概率。
    输入的最后有两个0。
     
    Output
    每组数据都对应一个输出,表示Speakless可能得到至少一份offer的最大概率。用百分数表示,精确到小数点后一位。
     
    Sample Input
    10 3
    4 0.1
    4 0.2
    5 0.3
    0 0
     
    Sample Output
    44.0%
    Hint
    You should use printf("%%") to print a '%'.
     
     
    题意描述:
    输入拥有的总积蓄n和准备申请的学校个数m(0<=n<=10000,0<=m<=10000) 
    以及每个学校的花费和录取概率
    解题思路:
    该题属于01背包为题的变型,背包问题可以求最大,也可以求最小。刚开始是正向思维,发现录取情况太多了,后来逆向思维解决了。题中欲求至少被一所学校录取的概率是多少,意即求求职成功的最大概率,那么我们先求他被每所学校都拒绝的最小概率p,最后用1减去p即为所求的求职成功的最大概率。
    代码实现:
     1 #include<stdio.h>
     2 struct S
     3 {
     4     int c;
     5     double p;
     6 };
     7 int main()
     8 {
     9     int n,m,i,j;
    10     struct S s[10010];
    11     double f[10010];
    12     while(scanf("%d%d",&n,&m), n!=0||m!=0)//判断条件 
    13     {
    14         for(i=0;i<m;i++)
    15             scanf("%d%lf",&s[i].c,&s[i].p);
    16         for(i=0;i<=n;i++)
    17             f[i]=1;
    18         for(i=0;i<m;i++){
    19             for(j=n;j>=s[i].c;j--){
    20                 if(f[j] > f[j-s[i].c]*(1-s[i].p))
    21                 f[j]=f[j-s[i].c]*(1-s[i].p);
    22             }
    23         }
    24         printf("%.1lf%%
    ",(1-f[n])*100);
    25     }
    26     return 0;
    27 }

    易错分析:

    1、判断条件需要理解一下

    2、求概率问题正向求解一般较为繁琐,适当的时候可以尝试逆向求解

  • 相关阅读:
    gThumb 3.1.2 发布,支持 WebP 图像
    航空例行天气预报解析 metaf2xml
    Baruwa 1.1.2 发布,邮件监控系统
    Bisect 1.3 发布,Caml 代码覆盖测试
    MoonScript 0.2.2 发布,基于 Lua 的脚本语言
    Varnish 入门
    快速增量备份程序 DeltaCopy
    恢复模糊的图像 SmartDeblur
    Cairo 1.12.8 发布,向量图形会图库
    iText 5.3.4 发布,Java 的 PDF 开发包
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/7266246.html
Copyright © 2011-2022 走看看