
贪心
文章平均质量分 56
贪心刷题
Sking426
这个作者很懒,什么都没留下…
展开
-
贪心刷题4-小A的糖果
要解决这个问题,我们可以遍历糖果盒,每次检查相邻盒子的糖果数之和是否超过给定的 x。如果是,我们就从当前盒子中减去多余的糖果数量以确保总和不超过 x。原创 2024-03-07 19:05:50 · 459 阅读 · 0 评论 -
贪心刷题3-合并果子
这道题的关键在于每次选择合并时都要选择最小的两堆果子来合并,从而保证每次合并的代价最小,累计的总代价也最小。可以使用两个数组,一个存储输入的果子数目(a1),另一个用于存储中间合并过程中生成的新堆(a2)。进行n-1次操作,每次从a1和a2指向的元素中选取两个最小的进行合并,更新指针位置,并将合并后的新重量加入到a2数组,同时更新总体力消耗sum。图1 节选自《 深入浅出。初始化两个指针,分别指向a1和a2的起始位置,用于在后续操作中选择最小的元素。输入果子的种类数n,并为a1数组赋予相应的果子数目。原创 2024-03-06 11:20:42 · 601 阅读 · 0 评论 -
贪心刷题2
按照接水时间对人进行排序,这样能确保每个人的等待时间被最小化。因为如果一个接水时间长的人排在前面,他会增加后面所有人的等待时间;而接水时间短的人排在前面,则他对后面人的等待时间影响较小。这样,每个人的接水时间对于等待时间的贡献是累积的,而不需要为每个人单独累加前面所有人的接水时间。这是一种更有效率的计算总等待时间的方法。优先选择结束时间最早的活动,以便为后续活动留出更多的空间。为此,所有活动首先根据它们的结束时间进行排序。计算总等待时间时,我们需要计算每个人在他之前所有人接水所耗费时间的总和。原创 2024-03-05 11:31:49 · 1004 阅读 · 0 评论 -
贪心刷题1-部分背包
目标是通过完全或部分地拿取这些金币堆,使得背包中的金币价值最大化。代码采用贪心算法,通过按价值与重量比降序排序金币堆,然后迭代地将它们添加到背包中,直到背包装满或没有更多的金币堆可考虑。这道题是部分背包,如果金币不能完整的放入是可以分割的。题目中有若干堆金币,每堆金币有一定的重量(《深入浅出程序设计竞赛(基础篇)》),以及一个最大承重为。原创 2024-03-04 16:08:06 · 521 阅读 · 0 评论