I NEED A OFFER!


Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 16705    Accepted Submission(s): 6660

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 '%'.

 

Author

Speakless

题目大意:Speakless有N万元,他要申请学校上学。总共同拥有M个学校可申请,

每一个学校都有申请费和申请概率,求他最少能获得一个学校名额的概率最大

为多大

思路:动态规划,用01背包做。须要注意概率的算法。至少申请上一个学校的

概率 = 1-(1-p1)(1-p2)(1-p3)… 当中,p1,p2,p3…为各个学校申请概率。

将N元当做背包总容量,学校当做物品。申请费为体积,不被申请上的概率当

做价值,转移方程就为 dp[j] = min(dp[j],dp[j-w[i]]*p[i]);

终于算得的dp[N]为Speakless有N万元,没有被不论什么学校申请的概率最大为dp[j]。

那么,终于结果为1 - dp[N]。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std; int w[10010];
double p[10010],dp[10010];
int main()
{
int N,M;
while(~scanf("%d%d",&N,&M) && (N!=0 || M!=0))
{
for(int i = 0; i < M; i++)
{
scanf("%d%lf",&w[i],&p[i]);
p[i] = 1-p[i];//不给offer概率
}
for(int i = 0; i <= N; i++)
dp[i] = 1;//概率最大为1
for(int i = 0; i < M; i++)
{
for(int j = N; j >= w[i]; j--)
{
dp[j] = min(dp[j],dp[j-w[i]]*p[i]);
}
}
dp[N] = 1- dp[N];
printf("%.1lf%%\n",dp[N]*100);
}
return 0;
}

最新文章

  1. ASP.NET Aries JSAPI 文档说明:AR.Form、AR.Combobox
  2. VS2008控件全部消失
  3. 【转】Java enum的用法详解
  4. top 10 tipis on Logging in Java- Tutorial (翻译)
  5. http的应用httpurlconnection--------1
  6. Maven学习总结(一副本)——Maven配置和搭建
  7. 操作数据库系统(OLTP)和联机分析处理系统(OLAP)的区别
  8. 轻量级应用开发之(10) UINavigationController导航控制器
  9. 深入css中的margin
  10. 英特尔&#174; 实感™ SDK 架构
  11. 转:完善eclipse+pdt作php开发中的代码提示能力
  12. 3.修改第一个程序来点亮LED
  13. Scala并发编程react、loop代码实战具体解释
  14. 解决vs2019中暂时无法为.net core WinForms使用 Designer 的临时方法
  15. Spark RPC框架源码分析(一)简述
  16. 深入理解Spring Redis的使用 (八)、Spring Redis实现 注解 自动缓存
  17. python_14 多态,封装
  18. 波音,自动驾驶bug未修复,致346人丧生!5个月内两次坠毁!其中,包括8名中国公民
  19. CH2601 电路维修(算竞进阶习题)
  20. mysql配置文件 /etc/my.cnf 详细解释

热门文章

  1. 玩转Web之easyui(二)-----easy ui 异步加载生成树节点(Tree),点击树生成tab(选项卡)
  2. C语言知识汇总
  3. Android - 分享内容 - 给其他APP发送内容
  4. Android-管理Activity生命周期 -停止和重启Activity
  5. Java的socket服务UDP协议
  6. think in coding
  7. hdu2665-Kth number
  8. android adb 不同的方式使用特定的解释
  9. 关于int全区变量读写的原子性
  10. Maven构建Hadoop