Luogu_P8742题解
欢迎收看CooooldWind的题解
本题是洛谷P8742
思路
众所周知的,这是能载入史册的经典的“01背包”题,适合刚入门的同学们做。
本题目的状态转移方程需要满足:
- 不放砝码,即上面的方案都能用;
- 在对于第
个砝码的选择中选择左边,即砝码重量加现在的天平上的重量等于原来的重量; - 在对于第
个砝码的选择中选择右边,即砝码重量减现在的天平上的重量等于原来的重量。
为了防止你们看不懂,我做了个图。
*从此处到“思路”内容结束以下为2023.9.22添加内容。
为了防止你们连图都看不懂,我就细说一波。
这张图使用的样例输入如下:
1 | 2 |
我们设
在开始正式的说明之前,我们最好加一个限制条件:如果天平两侧都没有砝码,放砝码的时候只能放在左边。只有这样子,后面的砝码才能根据第一个砝码加减计算。
所以关于第一个砝码,我们可以不放,也可以放。
但是到了第二个砝码,如果第一个不放:
把这个砝码放在左边(因为上面说了,整个天平在这个时候没有砝码),此时称量
重量的物品; 不放,此时称量重量为
的物品。
如果第一个被放了呢?那又是:
放在左边,此时称量
重量的物品; 放在右边,此时称量
重量的物品; 不放,此时称量
重量的物品。
所以总共有
以及,为什么要求最大值为所有砝码重量之和,并且在以下代码的内循环使用呢?因为最大只能称那么多,设到
最后,本题为了节省空间复杂度(不大规范的简而言之,就是存的数据的数量,各位有想细细了解的欢迎咨询百度),可以使用一维数组迭代。请各位自行尝试,本题解不做讲解。
代码
1 |
|
- 标题: Luogu_P8742题解
- 作者: CooooldWind_
- 创建于 : 2023-10-14 14:00:00
- 更新于 : 2023-10-22 13:08:24
- 链接: https://cooooldwind.netlify.app/2023_10_14_Tijie_Luogu_P8742/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论