#4 TLE 求条
查看原帖
#4 TLE 求条
776004
imnotcfz楼主2024/8/25 18:25

逝当地加了点注释。

#include <iostream>
using namespace std;

int V, n, k;
long long w[105][1005], v[105][1005], cnt[105];  // w[i][j]表示第i组第j个物品的重量,v同理。cnt[i]表示第i组物品的个数
long long f[105];  // DP数组

int main() {
    cin >> V >> n;  // V件物品,总重量n。
    for (int i = 1, a, b, c ; i <= n ; i++) {
        cin >> a >> b >> c;
        k = max(k, c);
        cnt[c]++;
        w[c][cnt[c]] = a;
        v[c][cnt[c]] = b;
    }
  // DP的遍历顺序什么的好像都没错。
    for (int g = 1 ; g <= k ; g++)
        if (cnt[g]) /*似乎没用的小优化*/ for (int i = V ; i - 1 ; i--)
            for (int j = 1 ; j <= cnt[g] ; j++)
                if (i >= w[g][j])
                    f[i] = max(f[i], f[i - w[g][j]] + v[g][j]);
    cout << f[V];
    return 0;
}

寄录,我不李姐,别人都不 T 就我 T,代码里似乎也找不到效率瓶颈 QAQ。

2024/8/25 18:25
加载中...