用户输出
34
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#42634 | #1121. jwp的幸运集合(弱化版) | Accepted | 100 | 41 ms | 368 K | C++ 11 / 977 B | 计试91-周翼腾 | 2020-07-23 23:13:20 |
#include <bits/stdc++.h>
using namespace std;
int A[18];
int B[18];
map<int, int> EVEN;
map<int, int> ODD; // 指子集中元素个数为奇数
int main() {
int n;
int ans = 0;
cin >> n;
for (int i = 0; i < n / 2; i++) cin >> A[i];
for (int i = 0; i < n - n / 2; i++) cin >> B[i];
//折半枚举
for (int k = 0, max = 1 << n / 2; k < max; k++) {
int sum = 0;
int q = 0; // 数子集中元素个数
for (int i = 0; i < n / 2; i++) {
if ((k >> i) & 1) {
sum += A[i];
q++;
}
}
if (q % 2 == 0)
EVEN[sum]++;
else
ODD[sum]++;
}
for (int k = 0, max = 1 << (n - n / 2); k < max; k++) {
int sum = 0;
int q = 0;
for (int i = 0; i < n - n / 2; i++) {
if ((k >> i) & 1) {
sum += B[i];
q++;
}
}
if (q % 2 == 0)
ans += EVEN[-sum];
else
ans += ODD[-sum];
}
cout << ans - 1; // 两个子集均为空需去掉
return 0;
}
用户输出
34
系统信息
Exited with return code 0
用户输出
69
系统信息
Exited with return code 0
20
50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 -50000000 50
<93 bytes omitted>
用户输出
184755
系统信息
Exited with return code 0
20
50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 5000000
<82 bytes omitted>
用户输出
0
系统信息
Exited with return code 0
用户输出
255
系统信息
Exited with return code 0