P5020 [NOIP2018 提高组] 货币系统 题解

2023-08-05,,

转化为完全背包即可。

#include <iostream>
#include <cstring>
#include <algorithm> using namespace std; const int N = 25010, M = 110; int n;
int f[N];
int a[M]; void solve() {
int maxx = 0;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i], maxx = max(maxx, a[i]);
memset(f, 0, sizeof(f));
f[0] = 1;
int ans = 0;
for (int i = 1; i <= n; i++) {
int x = a[i];
for (int j = x; j <= maxx; j++) {
f[j] += f[j - x];
}
}
for (int i = 1; i <= n; i++) if (f[a[i]] > 1) ans++;
cout << n - ans << '\n';
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int T;
cin >> T;
while (T--) solve();
return 0;
}

P5020 [NOIP2018 提高组] 货币系统 题解的相关教程结束。

《P5020 [NOIP2018 提高组] 货币系统 题解.doc》

下载本文的Word格式文档,以方便收藏与打印。