1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > h0154.加勒比海盗船——最优装载问题 (20 分)

h0154.加勒比海盗船——最优装载问题 (20 分)

时间:2023-01-22 22:34:26

相关推荐

h0154.加勒比海盗船——最优装载问题 (20 分)

代码长度限制 16 KB

时间限制 400 ms

内存限制 64 MB

题目描述

在北美洲东南部,有一片神秘的海域,那里碧海 蓝天、阳光明媚,这正是传说中海盗最活跃的加勒比 海(Caribbean Sea)。17 世纪时,这里更是欧洲大陆 的商旅舰队到达美洲的必经之地,所以当时的海盗活 动非常猖獗,海盗不仅攻击过往商人,甚至攻击英国 皇家舰…… 有一天,海盗们截获了一艘装满各种各样古董的 货船,每一件古董都价值连城,一旦打碎就失去了它 的价值。虽然海盗船足够大,但载重量为 C,每件古 董的重量为 wi,海盗们该如何把尽可能多数量的宝贝 装上海盗船呢?

输入格式

第1行输入T组测试数据,每组测试数据输入载重量 c 及古董个数 n,下1行输入每个古董的重量wi,用空格分开.

输出格式

每组能装入的古董最大数量

输入样例

1

30 8

4 10 7 11 3 5 14 2

输出样例

5

个人思路

第一眼以为是背包问题,但因为每一件古董都价值连城所以不用对各个物品进行选择,所以尽可能多的装入物品即可,也就是贪心问题。所以排序后从重量小的开始逐个进行判断能否装入便可得到最大数量的答案。

#include<bits/stdc++.h>using namespace std;int main(){int t;cin>>t;while(t--){int c,n;cin>>c>>n;vector<int> v;for(int i=0;i<n;i++){int temp;cin>>temp;v.push_back(temp);}sort(v.begin(),v.end());int sum=0;int res=0;for(int i=0;i<n;i++){sum+=v[i];if(sum<=c){res++;}else{break;}}cout<<res<<endl;}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。