WA#4求解
查看原帖
WA#4求解
1121807
ZOECCCCCCCC楼主2024/1/25 12:39
#include "iostream"

using namespace std;

int main() {
    int a[7] = {0, 1, 2, 3, 5, 10, 20};
    int ans = 0, sum = 0, b[100005], dp[100005], cnt = 0;
    for (int i = 1; i <= 6; i++) {
        int num;
        cin >> num;
        for (int j = 1; j <= num; j *= 2) {
            b[++cnt] = a[i] * j;//背包存储
            num -= j;
        }
        if (num)
            b[++cnt] = a[i] * num;

    }
    for (int i = 1; i <= cnt; i++)
        sum += b[i];
    for (int i = 1; i <= cnt; i++) {
        for (int j = sum; j >= b[i]; j--) {
            dp[j] = max(dp[j], dp[j - b[i]] + b[i]);
        }
    }
    for (int i = 1; i <= sum; i++) {
        if (dp[i])
            ans++;
    }
    printf("Total=%d", ans);
    return 0;
}
2024/1/25 12:39
加载中...