用户输出
1
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#80731 | #1086. jwp的幸运集合 | Accepted | 100 | 104 ms | 1012 K | C++ 11 (Clang) / 2.3 K | 15291309895 | 2022-08-02 12:07:03 |
#include <iostream>
#include <map>
#include <algorithm>
using namespace std;
map<long long, int> mp[2];
int main() {
int n, a[40], A[40], B[40], answer = 0;
cin >> n;
int m = n, A_len = n >> 1, B_len = n - (n >> 1);
while (m--) {
cin >> a[m];
}
for (int i = 0; i < n; i++) {
(i < A_len) ? A[i] = a[i] : B[n - 1 - i] = a[i]; // A : 0 ~ n >> 2 - 1 // B : n >> 2 ~ n - 1
}
// cout << A_len << endl;
// for (int i = 0; i < A_len; i++){
// cout << A[i] << endl;
// }
for (long long j = 0; j < (1 << A_len); j++) {
long long sum_a = 0, times_a = 0;
// int k = 0
for (long long k = 0; k < A_len; k++) {
if ((j >> k) & 1) {
sum_a += A[k];
times_a += 1;
}
// cout << sum_a << " " << times_a << endl ;
}
// while (k < j){
// if ((j >> k) & 1){
// sum_a += B[A_len - k];
// times_a += 1;
// k++;
// } else k++;
// }
mp[times_a % 2][sum_a]++;
}
for (long long j = 0; j < (1 << B_len); j++) {
long long sum_b = 0, times_b = 0;
// int k = 0;
for (long long k = 0; k < B_len; k++) {
if ((j >> k) & 1) {
sum_b += B[k];
times_b += 1;
}
}
// while (k < j){
// if ((j >> k) & 1){
// sum_b += B[A_len - k];
// times_b += 1;
// k++;
// } else k++;
// }
answer += mp[times_b % 2][-sum_b];
}
cout << answer - 1;
return 0;
}
//
// void subset(int a[], int len){
// int sum = 0;
//
// for (int mask = 1, total = 1 << len; mask < total; mask ++){
// Ans[mask][0] = mask;
//
// for (int i = 0; i < len; i++){
// Ans[mask][2] = 0; // 初始化
// if ((mask >> i) & 1) {
// sum += a[len - i]; // 计算每个子集的和
// Ans[mask][2]++; // 计算是偶数还是奇数
// }
// Ans[mask][1] = sum;
// }
// Ans[mask][2] %= 2; // 奇数输出1,偶数输出0
// }
//}
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