I NEED A OFFER!

                                                                  Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

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%
题目要求求Speakless可能得到至少一份offer的最大概率,直接求不好求,但是可以求它的对立面即一个都不能得到的最小概率,这样就把问题转化为了dp问题。只是求的是最小值,最后用1-dp(min)就行了。
参考代码:
#include<stdio.h>
double dp[10005],p[10005];
int a[10005];
int main()
{int n,i,j,m;while(scanf("%d%d",&n,&m)!=EOF){if(m==0&&n==0) break;for(i=0;i<m;i++){scanf("%d%lf",&a[i],&p[i]);p[i]=1-p[i];  //不能得到Offer的概率}for(i=0;i<=n;i++)dp[i]=1.0;  //初始化为1for(i=0;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];//求最小的不能得到的dp[n]printf("%.1lf%%\n",(1-dp[n])*100);}return 0;
}

hdu 1203 I NEED A OFFER!相关推荐

  1. 【动态规划-01背包】 HDU 1203 I NEED A OFFER!

    1203 ( I NEED A OFFER! )  Problem Description Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要准备的材料,于是,便需要去申请学 ...

  2. HDU 1203 I NEED A OFFER!

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  3. HDU 1203 I NEED A OFFER!(01背包)

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  4. HDU 1203 I NEED A OFFER! (动态规划、01背包、概率)

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  5. hdu 1203 I NEED A OFFER!

    I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  6. 杭电OJ分类题目(3)

    原题出处:HDOJ Problem Index by Type,http://acm.hdu.edu.cn/typeclass.php 杭电OJ分类题目(3) HDU Computational Ge ...

  7. 背包问题常见解题策略与例题解析

    背包问题作为常见的一种Dp 题目的变法多种多样 然而只要你理解透了背包的做法和各种优化 模型就显而易见了 千万不要似懂非懂 如果还有疑虑可以参考我的另一篇文章 背包九讲--全篇详细理解与代码实现 常见 ...

  8. 动态规划题目——背包

    背包问题 1. 01背包 [HDOJ 2955.Robberies] [HDOJ 1203.I NEED A OFFER!] [HDOJ 1864.最大报销额] 2. 完全背包 [HDOJ 2159. ...

  9. linux查找文件模糊名字,linux中模糊查找文件

    1.在当前目录下搜索指定文件: find . -name test.txt 2.在当前目录下模糊搜索文件: find . -name '*.txt' 3.在当前目录下搜索特定属性的文件: find . ...

最新文章

  1. 批量图片压缩工具:JPGCompact 2.0绿色版
  2. Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: Python
  3. Spring boot 默认日志配置
  4. [零基础学JAVA]Java SE应用部分-35.JAVA类集之四
  5. B站这套教程火了,火速搬运!限时删除~
  6. 6Linux 终端命令格式
  7. 博文视点大讲堂第33期——如何让你既能干得漂亮又说得清楚?
  8. Oracle-数据库
  9. Linux之ansible 自动化运维工具
  10. comsol 5.3 matlab,COMSOL5.3在Linux下的安装
  11. 台式计算机速度变慢的原因,电脑运行速度变慢的原因和解决方法
  12. 大型网站架构系列:电商网站架构案例
  13. 高德API实现地理逆编码
  14. 【Babble】批量学习与增量学习、稳定性与可塑性矛盾的乱想
  15. unity3D 鼠标点击游戏物体碰撞 (射线)
  16. Google Earth Engine(GEE)扩展——制作的GEE app的误区
  17. PPT乱码如何解决?
  18. MpAndroidChart饼图
  19. shineblink NEO-6M GPS模块获取经纬度/海拔/时间详解
  20. 2.4 随机变量函数的分布

热门文章

  1. 遇见C++ AMP:在GPU上做并行计算
  2. Unity3d(U3D) Windows/Android/IOS 播放rtmp/rtsp方案
  3. 7.1 安装软件包的三种方法 7.2 rpm包介绍 7.3 rpm工具用法 7.4 yum工具用法 7.5 yum搭建本地仓库...
  4. 美征信巨头Equifax因Struts漏洞导致数据大规模泄露
  5. 学习Spring(六) -- Spring中Bean的作用域以及生命周期
  6. iOS动态部署之RSA加密传输Patch补丁
  7. mysql常用命令及问题汇总
  8. python基础学习笔记(十三)
  9. CSS3无前缀脚本prefixfree.js及Animatable介绍
  10. 如何做一份出色的竞品分析?(一)