关注
根本就不需要排序。直接就是0-1背包问题啊。而且我一直不明白为什么你们总是一开始就开辟那么大的数组空间?为什么都不用vector? #include <iostream>
#include <vector>
#include <cassert>
#include <algorithm>
using namespace std;
// 需要填充一个容量为X的背包,使得成就点数最大
class Knapsack01 {
private:
vector<vector<int>> memo;
// 用 [0...index]的物品,填充容积为c的背包的最大价值
int bestValue(const vector<int> &w, const vector<int> &v, int index, int c) {
if (c <= 0 || index < 0)
return 0;
if (memo[index][c] != -1)
return memo[index][c];
int res = bestValue(w, v, index - 1, c);
if (c >= w[index])
res = max(res, v[index] + bestValue(w, v, index - 1, c - w[index]));
memo[index][c] = res;
return res;
}
public:
int knapsack01(const vector<int> &w, const vector<int> &v, int C) {
assert(w.size() == v.size() && C >= 0);
int n = w.size();
if (n == 0 || C == 0)
return 0;
memo.clear();
for (int i = 0; i < n; i++)
memo.push_back(vector<int>(C + 1, -1));
return bestValue(w, v, n - 1, C);
}
};
int main() {
// X为暑假天数,N为游戏数量
int X, N;
cin >> X >> N;
int w, v;
// vs存的是价值(成就点数)
// ws存的是每一件物品的重量(天数)
vector<int> vs, ws;
for (int i = 0; i < N; i++) {
cin >> w >> v;
vs.push_back(v);
ws.push_back(w);
}
cout << Knapsack01().knapsack01(ws, vs, X) << endl;
return 0;
}
1
相关推荐
01-16 22:31
赣南师范大学 运营
白火同学:1、简历可以浓缩成一页,简历简历先要“简”方便HR快速过滤出有效信息,再要“历”用有效信息突出个人的含金量。
2、教育背景少了入学时间~毕业时间,HR判断不出你是否为应届生。
3、如果你的平台账号效果还不错,可以把账号超链接或者用户名贴到对应位置,一是方便HR知道你是具体做了什么内容的运营,看到账号一目了然,二是口说无凭,账号为证,这更有说服力。 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 哪些公司开春招了? #
9147次浏览 115人参与
# 运营人的第一份offer应该如何选 #
213864次浏览 1253人参与
# 上班以后,你还有哪些坚持的爱好? #
6562次浏览 167人参与
# 华为工作体验 #
288727次浏览 1369人参与
# 你都在哪些场所面过试? #
18240次浏览 217人参与
# 聊聊你的职场新体验 #
314276次浏览 1852人参与
# 找工作以来,你最看不惯__ #
12559次浏览 282人参与
# AI coding的好用工具分享 #
16466次浏览 354人参与
# 工作压力大怎么缓解 #
137170次浏览 1228人参与
# 实习怎么做才有更好的产出 #
11013次浏览 204人参与
# 实习教会我的事 #
51395次浏览 399人参与
# 你最近因为什么迷茫? #
32277次浏览 459人参与
# 实习生工资多少才算正常? #
11727次浏览 189人参与
# 小米求职进展汇总 #
1006042次浏览 6509人参与
# 你给AI提过哪些离谱的需求? #
5425次浏览 157人参与
# 你见过最离谱的招聘要求是什么? #
253970次浏览 1727人参与
# 非技术2024笔面经 #
458779次浏览 4930人参与
# 领导做过最不靠谱的事 #
11580次浏览 203人参与
# 你想跟着什么样领导? #
47478次浏览 235人参与
# 职场破防瞬间 #
359217次浏览 2835人参与