hdu 1203 I NEED A OFFER!

hdu 1203 I NEED A OFFER!

大家好,又见面了,我是全栈君。

I NEED A OFFER!

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

Total Submission(s): 15503    Accepted Submission(s): 6128
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 '%'.

 


思路:01背包问题。要求得到至少一份offer的最大概率,能够转化为求都得不到offer的最小概率。

#include <stdio.h>
#include <iostream>
#include<algorithm>
using namespace std;
#define N 100005
double dp[N];
struct node
{
	int x;
	double y;
}a[N];

double min(double a,double b)
{
	return a<b?

a:b;}int main(){ int n,m; int k,i,j; while(cin>>n>>m) { if(n==0&&m==0) break; for(i=0;i<m;i++) { cin>>a[i].x>>a[i].y; a[i].y=1-a[i].y; // 得不到offer的概率 } for(i=0;i<=n;i++) dp[i]=1; for(i=0;i<m;i++) { for(j=n;j>=a[i].x;j--) { dp[j]=min(dp[j-a[i].x]*a[i].y,dp[j]); // 要么选这座大学 得不到offer (dp[j-a[i].x]*a[i].y)。要么选这座大学得到offer (dp[j]) } } printf("%.1lf%%\n",(1-dp[n])*100); } return 0;}

 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116669.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java并发基础:进程和线程之由来

    Java并发基础:进程和线程之由来

    2021年9月13日
    43
  • ASP.NET MVC 5 学习教程:数据迁移之添加字段

    ASP.NET MVC 5 学习教程:数据迁移之添加字段

    2021年8月25日
    49
  • 如何把内网IP映射到公网IP

    如何把内网IP映射到公网IP 鸽子出品2017-12-0522:28:22我们讲了如何搭建网站,可是有很多小伙伴私信跟我说怎么映射,今天我就教大家如何把内网地址映射到公网!我们所需要的工具有: 内网IP(这个是品,也是必有的!) nat123(这是映射软件,百度上都能搜索到) 有些小伙伴会问: 这个软件是什么操作系统啊? 这个软件免费吗? 当然官网上有windows版…

    2022年5月18日
    123
  • mybatis一级缓存和二级缓存工作方式_redis二级缓存

    mybatis一级缓存和二级缓存工作方式_redis二级缓存系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章Python机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言二、mybatis二级缓存:出现的原因:二级缓存介绍:二级缓存清除策略:事务管理策略:二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了

    2022年9月20日
    2
  • uint16与int16的区别_golang int转string

    uint16与int16的区别_golang int转stringGolang中uint、int,int8,int16,int32,int64区别在第一次学习go语言时,对go语言的各种int类型充满疑惑,为什么会有int、int8、int16等等的类型呢?为什么不像java一样,只个int类型呢?直接上demotest.gopackagemainimport(“fmt””unsafe”)fun…

    2022年9月20日
    4
  • DataFrame的apply()、applymap()、map()方法[通俗易懂]

    DataFrame的apply()、applymap()、map()方法[通俗易懂]对DataFrame对象中的某些行或列,或者对DataFrame对象中的所有元素进行某种运算或操作,我们无需利用低效笨拙的循环,DataFrame给我们分别提供了相应的直接而简单的方法,apply()和applymap()。其中apply()方法是针对某些行或列进行操作的,而applymap()方法则是针对所有元素进行操作的。1map()方法Themapmethod…

    2022年5月17日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号