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)
Total Submission(s): 9932    Accepted Submission(s): 3687


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

 

Source
Gardon-DYGG Contest 2

 

Recommend
JGShining

 

分析:这道题目可以说是在经典背包问题上的一点变型,题中首先将所求值变为了概率,“至少一份offer的最大概率”即求拿不到offer的最小概率。状态转移方程:dp[j]=Min(dp[j],dp[j-a[i]]*(1-b[i]));

处理的时候不能够把概率机械地相加,同时状态转移后要求的是拿不到的最小概率,而非正面求拿到offer的最大概率,拿到offer的意思是至少拿到一份offer,如果把状态转移方程写成dp[j]=Max(dp[j],dp[j -a[i]]*b[i])那么就变成了求拿到所有offer的最大概率,拿到所有offer和拿到至少一份offer显然是不同的.

 

总结此题需要注意的三方面:

第一:他可以拿到至少一份offer的最大概率p1。这句话需要转化为最小不收到offer的概率p2

 ,p1=1-p2 ,这样就可以避免分类的情况。

第二:最大背包因为状态转移变成了最小背包,注意变化。

状态转移方程:dp[j]=min(dp[j],dp[j-a[i]]*(1.0–b[i]));

第三:输入的最后有两个0。按题意是m!=0&&n!=0 ,而实际上n||m才能过。。

 

 

#include<iostream>
using namespace std;
#define SIZE 11111
double dp[SIZE];
double Min(double x,double y)
{return x<y?x:y;
}
int main()
{int i,j;int n,m,a[SIZE];double b[SIZE];while(cin>>n>>m,n+m){for(i=0;i<m;i++)scanf("%d %lf",&a[i],&b[i]);fill(dp,dp+11111,1);/*概率通通赋值为1*/  for(i=0;i<m;i++){for(j=n;j>=a[i];j--){dp[j]=Min(dp[j],dp[j-a[i]]*(1-b[i]));}}printf("%.1lf%%\n",(1-dp[n])*100);    }return 0;
}

 

 

 

转载于:https://www.cnblogs.com/Su-Blog/archive/2012/08/17/2644736.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401342.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

H5实现微信摇一摇功能

//摇一摇<script type"text/javascript"> var num 1; var SHAKE_THRESHOLD 2000; var last_update 0; var x y z last_x last_y last_z 0; function init() { if (window.DeviceMotionEvent) { window.addEventListener(devicemotion, deviceMotionHan…

PHP起点 - 运算符

一.算术运算符 名称    操作符    举例 加法          $a $b 减法     -      $a - $b 乘法     *     $a * $b 除法运算   /      $a / $b 取余运算   %     $a % $b 递增运算        $a, $a 递减运算  …

Java I/O流

字符流&#xff1a; Reader&#xff1a;用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。 |---BufferedReader&#xff1a;从字符输入流中读取文本&#xff0c;缓冲各个字符&#xff0c;从而实现字符、数组和行的高效读取。 可以指定缓冲区…

java中跨时区的日期格式转换

2019独角兽企业重金招聘Python工程师标准>>> 先上一段代码 public class DataTransfer {public static void main(String[] args) {String dateStr "Sep 30, 2014 12:00:00 AM";SimpleDateFormat sdf new SimpleDateFormat();sdf.applyPattern("MM…

Asp.net WebForm中应用Jquery EasyUI Layout

Asp.net WebForm中应用Jquery EasyUI Layout 按照EasyUI文档中的示例&#xff0c;编写layout代码&#xff1a; <body class”easyui-layout”> <div region"north" border"false" style"height:60px;background:#B3DFDA;">north reg…

C语言读取写入CSV文件 [二]进阶篇——写入CSV文件

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 本系列文章目录 [一] 基础篇 [二] 进阶篇——写入CSV [三] 进阶篇——读取CSV 什么是 包裹&#xff08;使用双引号&…

ABAP 数值四舍五入函数

DATA : dat TYPE p DECIMALS 9 VALUE 12.5445 ,dat1 TYPE p DECIMALS 9 .DATA dat2 TYPE p DECIMALS 9 VALUE 12.540.* 方法一 CALL FUNCTION HR_NZ_ROUNDING_DECIMALSEXPORTINGvalue_in datconv_dec 2 " 设置保留几位小数IMPO…

K8S中部署apisix(非ingress)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 不使用pvc的方式在K8S中部署apisix-gateway 简介 因为公司项目准备重构&#xff0c;现在做技术储备&#xff0c;之前公司项…

MVC3 URL 数据绑定

从数据库中取出的Int类型的ID&#xff0c;在Razor视图中显示的链接地址格式为:http://localhost:1846/news/Detail/1 Router格式&#xff1a;{controller/action/id} 数据库中对应的字段为ID,对应的Action中的参数名也必须为ID 否则 编译器会报参数值为Null的错误。 当数据库中…

机器学习理论知识部分--偏差方差平衡(bias-variance tradeoff)

摘要&#xff1a; 1.常见问题 1.1 什么是偏差与方差&#xff1f; 1.2 为什么会产生过拟合&#xff0c;有哪些方法可以预防或克服过拟合&#xff1f; 2.模型选择例子 3.特征选择例子 4.特征工程与数据预处理例子 内容&#xff1a; 1.常见问题 1.1 什么是偏差与方差&#xff1f; …

MVC中获取模型属性的Range和StringLength验证特性设置

MVC中的客户端及服务端模型验证信息都以ModelMetadata类型作为承载&#xff0c;在获得属性的ModelMetadata之后&#xff08;还不知道怎么获取ModelMetadata的童鞋请自行恶补&#xff09;&#xff0c;我们可以轻松得到一些我们在模型中定义的特性&#xff0c;比如显示名称、是否…

有手就行3——持续集成环境—maven、tomcat、安装和配置

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 有手就行3——持续集成环境—maven、tomcat、安装 持续集成环境**(5)-Maven****安装和配置** 持续集成环境(6)-Tomcat安装…

隐藏Content-Location标头带的内部IP地址的执行语句以及其可能会带来的问题

用IIS发布的系统&#xff0c;利用各种检测工具&#xff0c;可以获取到页面的请求头的信息&#xff0c;里面会带有服务器IP等保密信息。 为了避免服务器IP地址等这种信息别的工具检测到&#xff0c;导致安全隐患。可以在CMD中执行以下语句&#xff1a; cscript c:\\inetpub\admi…

unity获取ugui上鼠标位置

public class GetMousePos : MonoBehaviour {public Canvas canvas;//画布private RectTransform rectTransform;//坐标void Start(){canvas GameObject.Find("Canvas").GetComponent<Canvas>();rectTransform canvas.transform as RectTransform; //也可以写…

netty框架

Netty 提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty是一个NIO客户端 服务端框架。允许快速简单的开发网络应用程序。例如&#xff1a;服务端和客户端之间的协议。它最棒的地方在于简化了网络编程规范…

stm32中stm32f10x_type.h(固件3.0以前)、stm32f10x.h(固件3.0以后)、stdint.h文件的关系

在stm32f10x的3.5固件库中stm32f10x.h有以下代码&#xff08;第478行开始&#xff09;&#xff1a; /*** }*/#include "core_cm3.h" #include "system_stm32f10x.h" #include <stdint.h>/** addtogroup Exported_types* {*/ /*!< STM32F10x Stan…

.netcore基础知识(一)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 先来说说web服务器 先来一张图 一个典型的进程外托管模型 我们先看kestrel这一部分 我们在它前面放了一个方向代理服务器n…

内存墙,多核CPU的终结者?

原文地址&#xff1a;http://www.ed-china.com/ART_8800045174_400004_500008_OT_8f4eb612.HTM 多核处理器是当今计算领域的主导&#xff0c;而多核芯片则遍布从苹果的iPad到富士通K超级计算机的各种平台。2005年&#xff0c;由于功耗将单核CPU的时钟速度限制在3GHz&#xff0c…

BZOJ 1791 岛屿(环套树+单调队列DP)

题目实际上是求环套树森林中每个环套树的直径。 对于环套树的直径&#xff0c;可以先找到这个环套树上面的环。然后把环上的每一点都到达的外向树上的最远距离作为这个点的权值。 那么直径一定就是从环上的某个点开始&#xff0c;某个点结束的。 把环拆成链&#xff0c;定义dp[…

什么是SAS

什么是SAS&#xff1f;简单的说&#xff0c;SAS是一种磁盘连接技术。它综合了现有并行SCSI和串行连接技术&#xff08;光纤通道、SSA、IEEE1394及InfiniBand等&#xff09;的优势&#xff0c;以串行通讯为协议基础架构&#xff0c;采用SCSI-3扩展指令集并兼容SATA设备&#xff…