当前位置: 首页 > 编程日记 > 正文

HDU-1203 I NEED A OFFER!-0、1背包及空间优化

I NEED A OFFER!

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


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<=1000)
后面的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 '%'.
刚刚学习到背包这个章节,这道题目可以说是在经典背包问题上的一点改进,题中首先将所求值变为了概率 “至少一份offer的最大概率” 现假设被A学校录取概率为 a,被B学校录取概率为 b,则所求概率为1-(1-a)*(1-b), 这个应该好理解吧,知道了这点应该好办了吧,我们把判断条件有经典的相加变为 一个函数的判断:
  float probability(float a,float b)
  {
      return 1-(1-a)*(1-b);
  }
  float t=probability(p[i],c[j-w[i]]); 
           if(t>c[j])
                c[j]=t;
有了思路写出代码来:
 
ContractedBlock.gifExpandedBlockStart.gifView Code
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<math.h>
4 #include<string.h>
5 #include<time.h>
6
7  float c[1001][10001];
8  int w[1001];
9  float p[1001];
10
11  float probability(float a,float b)
12 {
13 return 1-(1-a)*(1-b);
14 }
15
16 int main()
17 {
18 int N,M;
19 while(scanf("%d%d",&N,&M),M|N)
20 {
21 for(int i=0;i<=1000;++i)
22 for(int j=0;j<=10000;++j)
23 c[i][j]=0;
24 for(int i=1;i<=M;++i)
25 scanf("%d %f",&w[i],&p[i]);
26 for(int i=1;i<=M;++i)
27 for(int j=0;j<=N;++j)
28 {
29 if(w[i]<=j)
30 {
31 float t=probability(p[i],c[i-1][j-w[i]]);
32 if(t-c[i-1][j]>1e-6)
33 c[i][j]=t;
34 else
35 c[i][j]=c[i-1][j];
36 }
37 else
38 c[i][j]=c[i-1][j];
39 }
40 printf("%.1f%%\n",c[M][N]*100);
41 }
42 return 0;
43 }
  这样做的结果是超时......
当然我把10001改成8000 也过了......   看来有时候题中条件是纸老虎啊!!!
除了“耍赖”还有其他方法吗,答案是肯定的,我们注意到在每次的更新中,看起来好像是依托于上一次的固定值,其实不然,首先每次更新是覆盖了上一次的所有值,也就是上一次的结果已经无须保留,其次此类问题不像数塔般由于在时间或地域上有前后的依赖性,存在一个类似分叉抉择,在数据模拟上(由于有了两个坐标)必须开辟二维数组,但是使用一维数组还有一个地方要改动,就是每次更新从后面开始,即从负荷(在不同的体型中可能是不同的意思)限制大的一端开始,这样就巧妙的利用了用一维数组使用到了二维数组中的“上一次”操作的值了。代码如下:
ContractedBlock.gifExpandedBlockStart.gifView Code
1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<math.h>
4 #include<string.h>
5 #include<time.h>
6
7 float c[10005];
8 int w[1001];
9 float p[1001];
10
11 float probability(float a,float b)
12 {
13 return 1-(1-a)*(1-b);
14 }
15
16 int main()
17 {
18 int N,M;
19 while(scanf("%d%d",&N,&M),M|N)
20 {
21 for(int i=0;i<=10000;++i)
22 c[i]=0;
23 for(int i=1;i<=M;++i)
24 scanf("%d %f",&w[i],&p[i]);
25 for(int i=1;i<=M;++i)
26 for(int j=N;j>=0;--j)
27 {
28 if(w[i]<=j)
29 {
30 float t=probability(p[i],c[j-w[i]]);
31 if(t>c[j])
32 c[j]=t;
33 }
34 }
35 printf("%.1f%%\n",c[N]*100);
36 }
37 return 0;
38 }

相关文章:

docker监控系统

第一&#xff1a;docker监控系统之命令行式监控 第二&#xff1a;docker监控系统之cadvisor 第三&#xff1a;docker监控系统之 第四&#xff1a;docker监控系统之 转载于:https://www.cnblogs.com/fengjunhua/p/8968210.html

Visual Studio 2005 Team System下载地址

注册一个msn就可以去微软下载了&#xff0c;关于替换序列号变成正版的方法我没有试&#xff0c;team suite我在用&#xff0c;但Team Foundation Server 我还没有安装好Microsoft Visual Studio 2005 简体中文正式版Visual Studio 2005 Team Suite 180 天试用版(可更换key变为正…

【spring】springAop开发

xml开发方式 springboot的使用 1、声明一个parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relati…

使用 SqlHelperParameterCache 类管理参数

SqlHelperParameterCache类是位于 Microsoft.ApplicationBlocks.Data命名空间底下。它底下有三个方法&#xff0c;分别是&#xff1a; CacheParameterSet&#xff1a;用于将SqlParameters 数组存储到缓存中GetCachedParameterSet&#xff1a;用于检索读取缓存中SqlParameters数…

改善C#程序的建议6:在线程同步中使用信号量

所谓线程同步&#xff0c;就是多个线程之间在某个对象上执行等待&#xff08;也可理解为锁定该对象&#xff09;&#xff0c;直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单的理解为在CLR中&#xff0c;值类型是…

Jerry眼中的SAP客户数据模型

本文Jerry将介绍八款SAP产品中的客户模型。希望您在阅读完本文之后&#xff0c;能对SAP客户模型设计的思路有一个最最粗浅的了解。 由于Jerry水平和精力所限&#xff0c;本文不会详细阐述这些产品里的客户模型设计细节&#xff0c;而是介绍了一种方法&#xff0c;如果您对这些模…

【spring】spring JDBC开发 、 将创建表生成sql语句的方法

将navicate中已存在表的创建转化成sql语句的方法 1、右击表&#xff0c;选择对象信息 2、点击DDL jar包引入 1、spring-starter-jdbc 代码实现&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

PL/SQL ——分页编程

通过PL/SQL编程&#xff0c;编写分页存储过程。代码如下所示&#xff1a; 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type test_cursor is ref cursor 5 end Page; 6 --创建存储过程 7 create or replace procedure Page( 8 (tablenam…

My view towards Machine Learning

Introduction:[to be continued]转载于:https://www.cnblogs.com/JVKing/articles/2290780.html

两个表的更新、表的复制

update 表1 set from 表1&#xff0c;表2 where 条件 表的复制数据 1.select * into newtable from table 2.insert into table select table2 select identity(int,1,1),* into newtable from .. 这条语句有时挺管用的转载于:https://www.cnblogs.com/leshang/archive/2…

Java数据结构简述

1、数组 概念&#xff1a;一个存储元素的线性集合。 数组声明和创建&#xff1a; dataType[] arrayRefVar new dataType[arraySize]; 二维数组&#xff08;多维数组&#xff09;声明和创建&#xff1a; dataType[][] arrayName new dataType[arraylenght1][arraylenght2]; PS…

CORS漏洞利用检测和利用方式

CORS全称Cross-Origin Resource Sharing, 跨域资源共享&#xff0c;是HTML5的一个新特性&#xff0c;已被所有浏览器支持&#xff0c;不同于古老的jsonp只能get请求。 检测方式&#xff1a; 1.curl访问网站   curl https://www.huasec.com -H "Origin: https://test.com…

【spring】具名参数

具名参数 配置xml文件 1、配置dataSource&#xff08;数据源&#xff09; 代码实现&#xff1a; <context:property-placeholderlocation"DB.properties"></context:property-placeholder><bean id"dataSource"class"com.alibaba.d…

利用委托和泛型实现树的常用操作

在日常开发中&#xff0c;经常遇到对树的操作&#xff0c;我们可以利用泛型和委托对这些树进行操作&#xff0c;这样就不需要每有一个树就要实现相应的功能了。 源码在http://files.cnblogs.com/haiconc/LangTest.zip 首先&#xff0c;使用类泛型声明&#xff1a; public class…

Scott的ASP.net MVC框架系列文章之四:处理表单数据(2)

前几周我发表了一系列文章介绍我们正在研究的ASP.NET MVC框架。ASP.NET MVC框架为你提供了一种新的开发Web应用程序的途径&#xff0c;这种途径可以让应用程序变得更加层次清晰&#xff0c;而且更加有利于对代码进行单元测试和支持TDD&#xff08;测试驱动开发&#xff09;开发…

eclipse工作空间配置导出

由于工作与学习的需求&#xff0c;需要使用不同的工作空间。而eclipse的新建工作空间其他以前的配置都没有继承过来&#xff0c;那么就得重新配置一遍。 经过学习其他前辈们的经验与自己的摸索总结一下3种方法&#xff1a; 方法一&#xff1a;使用eclipse的导出功能。 工作目录…

探讨UnsupportedOperationException的原因及解决方案

[原文链接]{https://blog.csdn.net/liu_005/article/details/74091805} 转载于:https://www.cnblogs.com/Wbin01/p/11222483.html

成长轨迹44 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2799、2976、2975、2742】...

一次ac的就不说啥了。。 2799:浮点数格式 View Code 1 #include <stdio.h> 2 #include <string.h> 3 #include <ctype.h> 4 #include <cmath> 5 6 char flo[10050][55]; 7 int poi[10050]; 8 9 int main()10 {11 int num;12 scanf("%d…

【转载】xmind的使用安装方法

原文链接&#xff1a;https://blog.csdn.net/qq_16093323/article/details/80967867

BCB Access violateion at Address 0000 0003. Read of address 0000 0003

来自网页&#xff1a;&#xff08;我的电脑做不到&#xff09; 运行一个程序&#xff0c;莫名出现一个对话框:access violation at address 0000.. read of address000试了几次问题依旧&#xff0c;网上搜了下解决办法&#xff1a;原文&#xff1a;baidu&#xff0b;google&…

与 Scott Guthrie 一道感受技术激情 1月13日于北京

可能很多朋友已经知道了这个消息&#xff0c;我觉得还是写一下&#xff0c;别让这个机会白白溜走。Scott Guthrie是谁&#xff0c;我就不介绍了&#xff0c;简单说&#xff1a;ASP.NET之父&#xff0c;Silverlight 的主要创始人&#xff0c;还管着太多微软的开发技术和工具&…

【web】将一个jar包更改成war包

可以看到&#xff0c;向tomcat中发布工程刚创建的工程不在可添加的范围内&#xff0c;所以可以看出该工程是一个jar包 1、在pom文件中添加一行代码 代码实现&#xff1a; <artifactId>jar.to.war</artifactId> 2、更新maven工程 此时发现main文件夹下出现了一个w…

牛腩44 整合登陆页 RequiredFieldValidator 和 ValidationSummary 以及 asp.net 自带的MD5 加密...

在我们后台登陆的时候,有 用户名,密码和验证码3个必选项,所以我们托3个验证控件过来 例如这里,如果没有填写用户名,当点提交的时候,显示 红色的 * 号,并且弹出一个 alert 效果如下 这个是怎么做到的呢? 用户名后面的 * 号和弹出的 alert 分别用到 RequiredFieldValida…

HDU-1268 找新朋友 (素数筛选)

找新朋友 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2518 Accepted Submission(s): 1183Problem Description新年快到了&#xff0c;“猪头帮协会”准备搞一个聚会&#xff0c;已经知道现有会员N人&#x…

硬盘无法访问文件系统损坏,里面的资料怎样恢复

文件系统损坏说明这个盘的文件系统结构损坏了。在平时如果数据不重要&#xff0c;那么可以直接格式化就能用了。但是有的时候里面的数据很重要&#xff0c;那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解&#xff08;不格式化的恢复方法&#xff09; 工具/软件&a…

【spring】第二个springmvc helloworld 以及 spring模糊路径

第二个helloword 配置文件&#xff1a; 1、添加pom文件 &#xff08;1&#xff09;配置parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version…

jquery倒计时插件可自定义多个倒计时间

jquery倒计时插件设置多个自定义倒计时时间&#xff0c;任意设置天、小时、分钟、秒倒计时间功能。 查看演示>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">…

怎样用cocos2d-x做一个基于地图块的游戏(Part One)

怎样用cocos2d-X做一个基于地图块的游戏 &#xff08;Part One&#xff09; 在这个分为上下两部分的教程中&#xff0c;我们将介绍如何使用Cocos2D-X和地图编辑器做一款基于地图块的游戏。在这个简单的地图块游戏里&#xff0c;一个精灵将在沙漠里搜寻它可口的西瓜&#xff01;…

【Code Complete】《Code Complete 》

良好编程实践的百科全书&#xff0c;完善编码聚焦于个人技能——所有的内容都来说明我们称之为“编写巧妙的代码”&#xff08;write clean code&#xff0c;clean可以翻译多种意思&#xff0c;只能意会了&#xff0c;有些英语翻译成汉语会很痛苦的&#xff09;。这本书就是那种…

redux示例

? 献上大概只有自己看得懂的学习笔记 结合使用实例理解更容易哦&#xff5e;import React from react; import ReactDom from react-dom; import {createStore} from redux; //解构一个createStore 创建状态对象//默认状态 state const defaultState{arr:[qq,bmw7], };//创建r…