动态规划:HDU-1203-0-1背包问题:I NEED A OFFER!

解题心得:

    动态规划就是找到状态转移方程式,但是就本题0-1背包问题来说转移方程式很简单,几乎看模板就行了。
    在本题来说WA了很多次,很郁闷,因为我记录v[i]的时候i是从0开始的,一些特殊数据就很尴尬了,比如 0 3,0 0.1,0 0.1,0 0.1。所以记录i要从1开始。
    输出double类型的实数时在cb中输出使用%f就行了,但是输入要%lf。
    此题可以反过来求一个都不能录取的概率,用1减去就是最终答案。

题目:

I NEED A OFFER!

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

Total Submission(s): 27353 Accepted Submission(s): 11117

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 ‘%’.


#include<cstdio>
#include<iostream>
#include<math.h>
using namespace std;
const int maxsize = 10010; int main()
{
double pro[maxsize],d[maxsize];
int v[maxsize],a,n;
while(~scanf("%d%d",&a,&n),a+n)
{
for(int i=1;i<=n;i++)//注意i要从1开始
{
cin>>v[i]>>pro[i];
pro[i] = 1 - pro[i];
}
for(int i=0;i<=a;i++)
d[i] = 1.0;
for(int i=1;i<=n;i++)
{
for(int j=a;j>=v[i];j--)//价格要求
{
d[j] = min(d[j],d[j-v[i]]*pro[i]);//状态转移
}
}
printf("%.1f%%\n",(1-d[a])*100);
}
return 0;
}

动态规划:HDU-1203-0-1背包问题:I NEED A OFFER!的相关教程结束。

相关推荐:

如何根据前一个连续段的值动态修改数值序列

本文介绍如何在pandas中识别数值连续段(streak),并基于前一段的值条件性地修改当前段——例如,将紧随“1”段之后的所有“2”段统一替换为1。 本文介绍如何在pandas中识别数值连续段(streak),并基于前一段的值条件性地修改当前段——例如,将紧随“1”段之后的所有“2”段统一替换为1...

如何在Python Flask中实现数据库的动态查询与组合筛选?

正确路径是利用SQLAlchemy的Query对象链式调用动态添加filter()等子句,且须经字段白名单校验与类型转换,否则引发InvalidRequestError或SQL注入。 Flask中用SQLAlchemy构建动态查询的底层逻辑 直接拼接SQL字符串或用eval()解析前端传参是危险且不...

如何在Python中实现基于异步IO的轻量级动态代理?

asyncio+aiohttp不能直接做动态代理,因其是应用层HTTP客户端,无法透传TLS握手、丢弃原始请求头、不支持CONNECT方法,必须用asyncio.open_connection实现TCP层字节级双向桥接。 为什么asyncio+aiohttp不能直接做动态代理 直接用aiohttp....

动态执行代码时正确访问类实例:在 exec 中安全使用 self

本文详解如何在Python类方法中通过exec动态定义函数,并使其能安全访问当前实例(self)的属性与方法,适用于调试交互场景(如pdb会话)及用户驱动的动态函数生成需求。 本文详解如何在python类方法中通过`exec`动态定义函数,并使其能安全访问当前实例(`self`)的属性与方法,适用于...

如何在 Polars 中根据列值动态添加时区偏移

本文介绍在Polars中不依赖map_elements或逐行迭代,而是利用dt.offset_by()与pl.format()组合,基于整数UTC偏移列(如-4、-5)对字符串时间列进行动态时区校正并转为UTC-awaredatetime的高效方法。 本文介绍在polars中不依赖`map_elem...

如何批量将目录下所有 Excel 文件动态转换为 CSV 文件

本文介绍使用Python批量读取指定目录中所有.xlsx文件,并自动将其转换为同名.csv文件,存入子目录,全程无需硬编码文件名或路径。 本文介绍使用python批量读取指定目录中所有`.xlsx`文件,并自动将其转换为同名`.csv`文件,存入子目录,全程无需硬编码文件名或路径。 在实际数据处理场...