1 条题解
-
0
挺简单的一道题目,设 表示 能被多少种组合表示出来,那么显然有 。
#include <bits/stdc++.h> using namespace std; const int MAXN = 105, MAXL = 25005; int T, n, a[MAXN], f[MAXL]; int main(void) { ios::sync_with_stdio(false); cin >> T; while (T--) { cin >> n; int ans = 0; for (int i = 1; i <= n; ++i) cin >> a[i]; memset(f, 0xcf, sizeof f); f[0] = 0; for (int i = 1; i <= n; ++i) { for (int j = a[i]; j <= MAXL; ++j) { f[j] = max(f[j], f[j - a[i]] + 1); } } for (int i = 1; i <= n; ++i) if (f[a[i]] == 1) ++ans; cout << ans << endl; } return 0; }
- 1
信息
- ID
- 3948
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 10
- 已通过
- 7
- 上传者