1 条题解
-
0
- 暴力枚举一半
#include <bits/stdc++.h> using namespace std; using i64 = long long; int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int n, k; cin >> n >> k; vector<int> c(n); for (int i = 0; i < n; i++) cin >> c[i]; int na = n / 2; set<i64> a; for (int st = 0; st < (1 << na); st++) { long long s = 0; for (int i = 0; i < na; i++) if ((st >> i) & 1) s += c[i]; a.insert(s); } int nb = n - na; set<i64> b; for (int st = 0; st < (1 << nb); st++) { long long s = 0; for (int i = 0; i < nb; i++) if ((st >> i) & 1) s += c[na + i]; b.insert(s); } // cout << "a= " << '\n'; // for (LL x: a) cout << x << ' '; // cout << '\n'; // cout << "b= " << '\n'; // for (LL x: b) cout << x << ' '; // cout << '\n'; bool ok = false; for (i64 x: a) if (b.count(k - x)) { ok = true; break; } cout << (ok ? "Yes" : "No") << '\n'; return 0; }
- 1
信息
- ID
- 149
- 时间
- 100ms
- 内存
- 32MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 3
- 上传者