捡苹果 (贪心 + 完全背包)

news/2024/11/30 5:40:43/

题目链接

思路:

 由于这个题目背包容量太大了,先不说会超时的问题,连dp数组都开不出来,所以我们要想办法减少背包容量,由此我们可以想到贪心。
 我们先按照密度最大到小对三个苹果进行排序,然后分出两个空间,一个较小的空间和一个较大的空间,较大的空间我们直接用密度最大的填满(也可能会剩一部分空间,就把剩下的自动分配给较小的空间),然后对较小的部分进行完全背包,这样就解决了背包容量过大的问题
 但是要注意,利用贪心的时候,留出的这部分较小空间,不能太小
举个例子:
3个苹果;

4 7
3 5
6 2容量 6

显然我不考虑留空间大小,直接取最大密度苹果到不能取,剩下的空间进行背包
那么显然我应该取第一个苹果,价值为7
但是显然我取第二个苹果两次价值更高,所以一味的贪心是会出现错误的,我们必须要找到合适的空间进行完全背包,但是你问我怎么取较小的部分,目前我只能说靠猜(捂脸),理论上是越大越好,但是考虑到时间复杂度,我取了一个1000

code

#include <bits/stdc++.h>using namespace std;typedef long long ll;const int maxc = 1e4 + 5;
const int maxn = 4;struct Apple
{int val,weight;double p;//密度bool operator < (const Apple &a) const {return p > a.p;} 
}apple[maxn];int dp[maxc];int main()
{ios::sync_with_stdio(false);int t,k = 0;cin>>t;while(t--){memset(dp,0,sizeof dp);k++;for(int i = 1; i <= 3; i++){cin>>apple[i].weight>>apple[i].val;apple[i].p = 1.0 * apple[i].val / apple[i].weight;}sort(apple + 1,apple + 4);ll bag,ans = 0;cin>>bag;if(bag > 1000) ans = (bag - 1000) / apple[1].weight * apple[1].val,bag = 1000 + (bag - 1000) % apple[1].weight;for(int i = 1; i <= 3; i++){for(int j = apple[i].weight; j <= bag; j++){dp[j] = max(dp[j],dp[j - apple[i].weight] + apple[i].val); }}ans = ans + dp[bag];cout<<"Case "<<k<<": "<<ans<<endl;}return 0;
}

http://www.ppmy.cn/news/455223.html

相关文章

怎么就不是本人捡到的呢

不过萨嗒姆船长很显明比秦剑设想中要沉得住气&#xff0c;就餐的氛围是愉悦的&#xff0c;秦剑和一帮爷们胡乱聊着天&#xff0c;一直到最后&#xff0c;船长大人都貌似无害地不讯问秦剑任何事情。 不外秦剑晓得&#xff0c;这位看起来面目和气的船长将自己的狰狞给暗藏了起来罢…

遍地是钱,为什么捡不到?

中国快速发展的这些年来&#xff0c;几乎每一代的年轻人&#xff0c;都会说&#xff0c;上一代人拥有最好的机会&#xff0c;他们抓住了时代的红利&#xff0c;而自己则只能承受重压&#xff0c;那么现在流行新名词&#xff0c;内卷。 当然&#xff0c;快速发展的时代确实有红利…

Python:多分支选择

Python语句结构 1、和其它编程语言一样,按照语句执行流程划分,Python程序也可分为3大结构:顺序结构、选择(分支)结构和循环结构 ⑴顺序结构:就是让程序按照从上到下的顺序依次执行每一行代码,不重复执行任何代码,也不跳过任何代码 ⑵选择结构:也称分支结构,就…

说精神力量的词,愿力很神奇

说精神力量的词&#xff0c;愿力最神奇&#xff01; ​愿力&#xff0c;心力&#xff0c;精神&#xff0c;精 气 神&#xff0c;气 &#xff0c;能量 【能量】是个外来词 趣讲大白话&#xff1a;200天了&#xff0c;布道的愿力推动我 【趣讲信息科技200期】 ******************…

为啥需要BLE+UWB Beacon?BLE+UWB经典应用:苹果AirTag等防丢标签提示我们,或许是UWB高精度定位落地的未来发展方向

一、BLE基本特性&#xff1a; 低功耗&#xff1a;在所有有源无线通讯设备中&#xff0c;综合通讯距离和通讯带宽&#xff0c;BLE是表现最佳的无线技术&#xff1b; 低延迟&#xff1a;连接速度很快&#xff0c;毫秒级的连接速度&#xff1b; 远距离&#xff1a;长达数百米的通…

什么是物联网?常见IoT协议最全讲解

参考自:《什么是物联网?常见IoT协议最全讲解》     《IOT(物联网)的七大通信协议》     《物联网通信协议大汇总! 》     《详解物联网通信协议》 文章目录 一、什么是物联网?1. 物联网也是互联网2. 物联网的主体是“物”3. 物联网和人工智能4. 物联网的现状…

车载通信——通信方式

一.通信类型 车联网分为三个部分&#xff1a;车内网、车际网和车载移动互联网。 &#xff08;1&#xff09;车内网 车内网位于汽车内部的网络通信&#xff0c;车内总线协议包括CAN&#xff0c;LIN&#xff0c;FlexRay&#xff0c;MOST。传感器技术是关键。 &#xff08;2&…

从端到边缘,无线技术赋能AI边缘计算处理器

------------------------------------------------------------------------------------------------------------ 文章版权归为微信公众号 Wireless Inside (前身 无线技术联盟&#xff09;&#xff0c;转载请注明出处. XCODER. --------------------------------------…