P5662 [CSP-J2019] 纪念品 题解
lijingshu_304775 · · 题解
原题链接:https://www.luogu.com.cn/problem/P5662。
更好的使用方式:https://www.luogu.com.cn/article/sxhfnpo8。
警告:严禁抄袭。
分析
这道题已知
先看数据范围:
对于
对于
由
AC代码
#include<bits/stdc++.h>
using namespace std;
int t, n, m;
int a[105][105];//a[i][j]:第i天,j号物品的价格
int f[10005];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> t >> n >> m;
for (int i = 0; i < t; i++) {
for (int j = 0; j < n; j++) {
cin >> a[i][j];
}
}
//一天一天做,比较今天与明天
for (int i = 0; i < t - 1; i++) {
memset(f, 0, sizeof(f));
for (int j = 0; j < n; j++) {
if (a[i + 1][j] > a[i][j]) {
//体积:a[i][j],价值:a[i + 1][j] - a[i][j]
for (int k = a[i][j]; k <= m; k++) {
f[k] = max(f[k], f[k - a[i][j]] + a[i + 1][j] - a[i][j]);
}
}
}
//每一件物品考虑完后,f[m]即m元最多赚的钱
m += f[m];
}
cout << m;
return 0;
}
AC记录:https://www.luogu.com.cn/record/196364812。