用户输出
1
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#100291 | #1086. jwp的幸运集合 | Accepted | 100 | 133 ms | 1012 K | C++ / 972 B | Dytchem | 2023-07-11 18:16:56 |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> v;
ll a[20], b[20];
map<ll, ll> mj, mo;
int main() {
ll ans = -1, n0;
cin >> n0;
for (int i = 0; i < n0; ++i) {
int tmp;
cin >> tmp;
// if (tmp != 0)
v.push_back(tmp);
}
int n = v.size();
if (n == 0 || n == 1) {
cout << 0;
return 0;
}
int n2 = n >> 1;
int n1 = n - n2;
for (int i = 0; i < n2; ++i) a[i] = v[i];
for (int i = 0; i < n1; ++i) b[i] = v[i + n2];
for (ll i = 0; i < (1 << n2); ++i) {
ll sum = 0, num = 0;
for (ll j = 0; j < n2; ++j)
if ((i >> j) & 1) {
sum += a[j];
++num;
}
if (num % 2 == 1)
mj[sum]++;
else
mo[sum]++;
}
for (ll i = 0; i < (1 << n1); ++i) {
ll sum = 0, num = 0;
for (ll j = 0; j < n1; ++j)
if ((i >> j) & 1) {
sum += b[j];
++num;
}
if (num % 2 == 1)
ans += mj[-sum];
else
ans += mo[-sum];
}
cout << ans;
}
31
749 349 69 -880 282 -926 -831 225 988 552 -193 634 369 476 204 487 387 -803 -370 -975 -17 -485 3
<40 bytes omitted>
用户输出
260459
系统信息
Exited with return code 0
31
362 -14 -181 -465 -400 -232 26 963 70 728 -728 -222 -510 854 139 386 555 994 103 279 213 76 953
<36 bytes omitted>
用户输出
81861
系统信息
Exited with return code 0
用户输出
16383
系统信息
Exited with return code 0