POJ 2184 Cow Exhibition (想法题&双变量0-1背包)

【0-1背包问题 】详细解析+图解+详细代码 【0-1背包问题】有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?1.【题目描述】2.【递推思路】1.【基本思路】2.【本题思路】3.【图解】3.【代码】 1.【题目描述】 有n 个物品,它们有各自的重量和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 物品数量4 背包容量8 物品编号 1 2 3 4 重量 2 3 4 5 价值 3 4 5 8 2.【递推思路】 1.【基本思路】 1.确定状态变量(函数) 2. 阅读详情

http://poj.org/problem?id=2184


dp[s]表示当TS=s时,TF的最大值。

背包容量?——我们要找到它的最大值,不断分开累加正s和负s即可。

if (s > 0)
{
	for (j = Max; j >= Min; --j)
		dp[j + s] = max(dp[j + s], dp[j] + f);///dp[s]表示当TS=s时,TF的最大值
	Max += s;
}
else
{
	if (f <= 0) continue; ///剪枝
	for (j = Min; j <= Max; ++j)
		dp[j + s] = max(dp[j + s], dp[j] + f);///dp[s]表示当TS=s时,TF的最大值
	Min += s;
}

完整代码:

/*32ms,1168KB*/

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;

int dp[200005];

int main()
{
	int n, i, j, s, f, Min, Max;
	memset(dp, -0x3f, sizeof(dp));
	dp[Min = Max = 100000] = 0;
	scanf("%d", &n);
	for (i = 0; i < n; ++i)
	{
		scanf("%d%d", &s, &f);
		if (s > 0)
		{
			for (j = Max; j >= Min; --j)
				dp[j + s] = max(dp[j + s], dp[j] + f);///dp[s]表示当TS=s时,TF的最大值
			Max += s;
		}
		else
		{
			if (f <= 0) continue; ///剪枝
			for (j = Min; j <= Max; ++j)
				dp[j + s] = max(dp[j + s], dp[j] + f);///dp[s]表示当TS=s时,TF的最大值
			Min += s;
		}
	}
	int ans = 0;
	for (i = 100000; i <= Max; ++i)
		if (dp[i] >= 0) ans = max(ans, dp[i] + (i - 100000));
	printf("%d\n", ans);
	return 0;
}

科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度.docx 科技中介服务机构如何提升客户在技术评估与需求匹配环节的服务效率与专业度 立即下载

相关推荐

51单片机的温湿度检测报警系统仿真资料

51单片机的温湿度检测报警proteus仿真系统

单变量分析、组合变量分析

单变量分析、组合变量分析 单变量分析 1.协方差的一些解释: 在坐标轴中,使用x_u、y_u画两条直线,会使数据分布在四个象限 当s_xy为正时,表示变量x、y是正的线性关系,即x增加,y增加 当s_xy为负时,表示变量x、y为负的线性关系,即x增加,y减小 当s_xy=0时,表示数据均匀的分布在四个象限中,两个变量基本没有相关性 2.皮尔逊基相关系数的一些解释: 如果变量x、y存在完全的线性关系...

WangYouJin321的博客 5105

Android真机调试——ADB调试(含华为手机无法找到设备)

本文以Huawei Nova7为例。

lianqi2003的博客 7860

优化 | 线性化:两个0-1变量相乘的线性化

优化 | 线性化:两个0-1变量相乘的线性化非线性整数规划模型Gurobi求解代码线性化 作者:刘兴禄, 清华大学 清华-伯克利深圳学院,博士在读 欢迎关注我们的微信公众号 运小筹 非线性整数规划模型 考虑下面的非线性0-1整数规划 max⁡y+xzs.t.2x+3y⩽3y+z⩽1x,y,z∈{0,1} \begin{aligned} \max \quad &amp; y + xz \\ s.t. \quad &amp; 2x + 3y \leqslant 3 \\ &amp; y + z \leqs

HsinglukLiu的博客 6815

Manimgl 进阶笔记

目录 一、调整视频输出的纵横比 二、调整预览窗口的尺寸 三、在开发工具中直接调试 一、调整视频输出的纵横比 调整输出视频的纵横比,在日常开发中属于比较基本的需求。要使用 Manimgl 得到期望的分辨率的视频输出需要修改以下几个地方: 第一步:在 custom_config.yml 配置文件中通过 camera_qualities设置视频的输出分辨率。manimlib 框架已经在 default_config.yml 文件中设置了四种视频输出分辨率,default_qualities 参数.

gunnery的专栏 2859

<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

阿斯顿阿斯顿啊啊是打发士大夫

IC跳跳鱼的博客 3586

动态规划解最长公共子序列(LCS)问题 (附可打印LCS完整代码)

动态规划法 经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。 为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。 【问题】 求两字符序列的最长公共字

AC,∑ndless 9136

《QGIS快速入门与应用基础》010:下载过程中常见问题(如网速慢、文件损坏)

针对QGIS下载过程中的常见问题提供了系统解决方案。主要解决下载速度慢(≤100KB/s)和文件损坏两大核心问题:通过切换国内镜像源(如清华大学、阿里云)、使用专业下载工具提升速度;采用MD5/SHA256校验确保文件完整性,并排查存储介质和杀毒软件干扰。文章还包含macOS权限问题、Linux依赖缺失等高频问题的速解方案,并附详细的排查流程图和预防技巧,帮助用户顺利完成QGIS下载。后续将详细介绍安装流程,适合零基础用户参考。

LuckyHanMo的博客 482

最长递增子序列(LIS)的O(NlogN)打印算法

题目: 求一个一维数组arr[n]中的最长递增子序列的长度,如在序列1,5,8,3,6,7中,最长递增子序列长度为4 (即1,3,6,7)。 方法一:一般的DP方法(O(N^2)) 像LCS一样,从后向前分析,很容易想到,第i个元素之前的最长递增子序列的长度要么是1(单独成一个序列),要么就是第i-1个元素之前的最长递增子序列加1,这样得到状态方程:

AC,∑ndless 7453

springboot&mybatis中数组和字符串数据类型的转换

/前端数组字段//数据库中字段/*与前端交互时使用的get/set*/System.out.println("接收前端数据");/*与前端交互时使用的get/set*//*与数据库交互时使用的get/set*/System.out.println("从数据库中读取数据");/*与数据库交互时使用的get/set*/

l_q_l的专栏 2475

高通Camx功能feature分析之一:remosaic功能导通

本文详细介绍了S5K3P9S传感器前置场景中SW Remosaic功能的实现流程。首先需在sensorxml中确认支持SW Remosaic类型,并集成remosaic相关库文件(libremosaic_wrapper.so等)。核心实现包括:初始化阶段调用InitFrontSamsungRemosaic();执行线程DeferFrontInitThread()读取校准数据;通过DoSamsungRemosaic()执行remosaic算法处理;最后在析构函数中调用DeinitFrontSamsungRem

1700

动态规划(DP)——入门篇(11.24更新)

零、先修课程 首先,在开始理解DP的思想前,你需要 1. 完成HDU里面的递推求解专题练习(For Beginner)那7道题(这些题很简单,题解请在博客中搜索),这对你理解DP有很大的帮助。 2. 对递归搜索(比如深度优先搜索,DFS)有一定了解。 一、递归与记忆化搜索 我们从POJ 3176入手来学习这一思想。(题目很短,请快速读完) 从上往下看,最大和值无非是往左走和往右

AC,∑ndless 2860

Pydoll浏览器自动化框架教程

让浏览器自动化回归本质。不再纠缠驱动兼容、不再手动处理验证码、不再因为请求和 UI 分裂而头疼。如果你经常做 Web 自动化、爬虫或者测试,不妨试试 Pydoll。也别忘了给项目点个 ⭐,让作者知道有人喜欢这个工具。👉GitHub 地址。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 204

Codeforces Round #119 (Div. 2) / 189A Cut Ribbon (完全背包)

A. Cut Ribbon http://codeforces.com/problemset/problem/189/A time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output

AC,∑ndless 2675

财务数智化——解读224页 2025年数智技术业财融合应用蓝皮书【附全文阅读】

《数智技术赋能业财融合蓝皮书》面向企业管理者及数字化转型从业者,系统阐述数智技术在业财融合中的应用。全书围绕技术基础(定义、分类、发展趋势)、融合框架(三阶段路径与三层价值)、七大行业应用场景(涵盖核算自动化、智能收款、项目管控等)、关键技术(AI、大数据等)及实施要点(组织协同、数据治理等),通过典型案例为企业提供从技术到实践的全面指导,助力实现数据贯通与价值创造。

cdfunlove的博客 1747

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

UVa 10313 Pay the Price (DP&整数拆分)

思路: 这个题目涉及到一个结论,用不超过j个硬币凑出面值i的方案种数,是和用面值不超过j的硬币凑出面值i的方案种数是相同的。说得再数学一点,就是整数i拆分成不超过j个整数的拆分数,是和整数i拆成若干个值不超过j的整数的拆分数是相同的。具体的证明用到了Ferrers图像的性质。 这样的话我们就可以取一个二维数组f[i][j]表示用面值不超过j的硬币凑出面值i的方案的种数,那么如果我使用了面值j,对应方案种数就应该加上f[i-j][j],如果我们不使用面值j,那么对应的方案种数就应该加上f[i

AC,∑ndless 2356

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Codeforces Round #235 (Div. 2) / 410D Roman and Numbers (带有整除性质的数位DP)

http://codeforces.com/problemset/problem/401/D 解释全部在代码的注释中: /*78ms,205464KB*/ #include using namespace std; const int mx = 1 << 18; long long dp[mx][100]; ///dp[mask][j]表示余数为j时的mask对应的x的个数 ///

AC,∑ndless 2198

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

UVa 357 Let Me Count The Ways (完全背包)

357 - Let Me Count The Ways Time limit: 3.000 seconds  http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=293 思路:dp[i] += dp[i - coin[

AC,∑ndless 2189

数位DP小记 + HDU 2089 不要62

【背景】 如何求出在给定区间[A,B]内,符合条件P(i)的数i的个数? 条件P(i)一般与数的大小无关,而与数的组成有关,有一下几种P(i): 数i是递增/递减的:1234, 2579,… 双峰的:19280,26193,… 含/不含某一数字的,比如含49:49, 149, 1492,…  被某一数m整除的,比如m=13:39,130,650... 【思路】 采用

AC,∑ndless 2156

UVa 10074 Take the Land (转化思想&最大子矩阵和)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1015 首先将原问题转化为最大子矩阵和问题: 0 -> 1 1 -> -1000 对于最大子矩阵和问题,可以利用前缀和转化为一维的最大子序列和问题(见代码)

AC,∑ndless 1957

UVa 624 CD (0-1背包)

624 - CD Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=565 You have a long drive by car ahead. You have a

AC,∑ndless 1910

POJ 1276 Cash Machine (多重背包&单调队列)

http://poj.org/problem?id=1276 模板题。 完整代码: /*110ms,4316KB*/ #include #include const int mx = 1005; const int mxw = 1000005; int w[mx], m[mx], dp[mxw], deq[mxw], deqv[mxw]; int solve(int m

AC,∑ndless 1846

LightOJ 1085 All Possible Increasing Subsequences (DP&离散化&树状数组)

http://lightoj.com/volume_showproblem.php?problem=1085 先说个很快的方法——二维思考,从右下往左上离散化: /*0.364s,2860KB*/ #include using namespace std; const int mx = 100005; const int mod = 1000000007; int tree[m

AC,∑ndless 1744

UVa 10664 Luggage (0-1背包)

10664 - Luggage Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=1605 Peter and his friends are on holiday, s

AC,∑ndless 1735

SPOJ 345 Mixtures (区间DP&前缀数组)

http://www.spoj.com/problems/MIXTURES/ 和矩阵链乘类似,然后用前缀数组来计算从i到j的连续物品的混合颜色值。 dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + ((sum[k] - sum[i - 1]) % 100) * ((sum[j] - sum[k]) % 100)); 完整代码: /

AC,∑ndless 1622

UVa 10036 Divisibility (同余DP)

http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=977 直接暴力肯定不行,都O(2^n)了,那么从同余的性质入手, 定义dp[i][j]表示加到第i个数时是否能被j整除。 那么可以得到如下状态转移方程: dp[i][(

AC,∑ndless 1559
上一篇: HDU 2955 Robberies (想法题&0-1背包)
下一篇: HDU 2126 Buy the souvenirs (贪心&0-1背包最优解的个数)
synapse7
博客等级 码龄14年 432粉丝 701原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值