贪心算法-最优装载问题
最优装载问题:有一轮船载重量为c,集装箱 i 的重量为Wi,在装在体积不受限制的情况下,将尽可能多的集装箱装上轮船。
贪心策略:集装箱重量最轻的先装
时间复杂度:T(n) = O(nlogn)
主要两个阶段:排序 -> 装载
实例
问题描述:小明的表哥为他推荐了一些学习计算机编程的的小视频,这些视频的播放时间长短不完全相同。现在给定一段时间,你能告诉小明他最多可以看多少个视频吗?(每个视频的播放时间和给定的总时间均用分钟为单位)
输入
单组输入数据
第一行为m n
m为给定时间长度(分钟)(0<n,m<=1000)
n表示视频个数
接下来是n个整数代表每个视频的播放时间(每个视频播放时间为不超过1000的正整数)
样例输入
84 6
65 46 18 76 79 3
输出
输出一个整数代表XP最多可以看的视频数。
样例输出
3
#include<iostream>
#include<algorithm>
#define MAXN 1000005
using namespace std;
int w[MAXN];
int main()
{
int c,n;
int sum = 0;
int tmp = 0;
cin >> c >> n;
for(int i= 1; i <= n; ++i)
cin >> w[i];
sort(w+1,w+1+n);
for(int i = 1; i <= n; ++i)
{
tmp += w[i];
if(tmp <= c)
++sum;
else
break;
}
cout << sum << endl;
return 0;
}