关注
按喜好程度排序, 每次按取的件数和当前花费金额分类记录, 剩下普通零食按完全背包更新就可以了, 这是后来改的, 不一定完全正确, 欢迎讨论..觉得不错的点个赞呗 #include<bits/stdc++.h>
using namespace std;
vector<int> f;
bool cmp(const int& a, const int& b) {
return f[a] < f[b];
}
int main(){
int m, n, v, t;
while (cin >> v >> n) {
vector<int> a(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
cin >> m;
f = vector<int>(n, n);
for (int i = 0; i < m; i++) {
cin >> t;
f[t - 1] = i;
}
sort(a.begin(), a.end(), cmp);
vector<vector<int> > dp(v / a[0] + 1, vector<int>(v + 1, 0));
int res = 0;
// 先挑选最喜欢的零食, 无约束
for (int i = 0; i < v / a[0] + 1; i++) {
dp[i][i * a[0]] = 1;
}
// 按喜欢程度依次挑选其他特别喜欢的零食,
for(int i = 1; i < m; i++) {
vector<vector<int>> t = move(dp);
int size = v / a[i] + 1;
dp = vector<vector<int> >(size, vector<int>(v + 1, 0));
for (int j = 1; j < t.size(); j++) {
// 每次取的要比前一种要少
for (int k = min(size - 1, j - 1); k >= 0; k--) {
for (int l = k * a[i]; l <= v; l++){
dp[k][l] = (dp[k][l] + t[j][l - k * a[i]]) % 10000007;
}
}
}
}
// 统计各花费的方案数
vector<int> cur(v + 1, 0);
for (int i = 0; i <= v; i++) {
for (int j = 0; j < dp.size(); j++) {
cur[i] = (cur[i] + dp[j][i]) % 10000007;
}
}
// 按完全背包更新其余零食
for (int i = m; i < n; i++) {
for (int j = a[i]; j <= v; j++) {
cur[j] = (cur[j] + cur[j - a[i]]) % 10000007;
}
}
cout << cur[v] << endl;
}
return 0;
}
查看原帖
点赞 13
相关推荐
PrintWrite...:感觉是同一个面试官,基本上一样,我是周三面的。
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 职场中那些令人叹为观止的八卦 #
12378次浏览 156人参与
# 你找工作想离家近 or 离家远? #
8928次浏览 164人参与
# 百度秋招 #
45628次浏览 365人参与
# 我的职场社死时刻 #
10034次浏览 107人参与
# 如何拒绝/反向PUA #
83184次浏览 372人参与
# 你父母给过你哪些不靠谱的职场建议? #
8560次浏览 138人参与
# 腾讯音乐秋招 #
423457次浏览 4741人参与
# 秋招吐槽大会 #
48835次浏览 435人参与
# 哪些公司开始补录了 #
10052次浏览 119人参与
# 那些年,我收到的‘奇葩’回复 #
5780次浏览 59人参与
# 职场中对你有帮助的书 #
23592次浏览 213人参与
# 你秋招最后悔的选择 #
8656次浏览 69人参与
# 租房前辈的忠告 #
274773次浏览 7199人参与
# XX请雇我工作 #
7346次浏览 73人参与
# 秋招你经历过哪些无语的事 #
5601次浏览 60人参与
# 月薪多少能在一线城市生存 #
93523次浏览 677人参与
# 假如你的老板掉河里,你的工作能为他做什么 #
40059次浏览 402人参与
# 通信硬件知识分享 #
39507次浏览 527人参与
# 你觉得机械有必要实习吗 #
66966次浏览 481人参与
# 交通银行工作体验 #
21164次浏览 69人参与
# 中科曙光工作体验 #
5498次浏览 23人参与
# 秋招疯了,看什么都像offer #
8904次浏览 99人参与
查看22道真题和解析
