比赛 |
国庆欢乐赛2 |
评测结果 |
TAAAAAAAATTTTTTTTTTT |
题目名称 |
毛一琛 |
最终得分 |
40 |
用户昵称 |
xuyuqing |
运行时间 |
35.188 s |
代码语言 |
C++ |
内存使用 |
8.70 MiB |
提交时间 |
2025-10-04 11:35:08 |
显示代码纯文本
#include <cstdio>
#include <iostream>
#include <unordered_map>
#include <utility>
#include <vector>
using namespace std;
const int N = 21;
int n;
long long dp[(1 << N) - 1];
long long res;
int lowbit (int num) {
return num & (-num);
}
int main () {
freopen ("subsets.in", "r", stdin);
freopen ("subsets.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> dp[1 << (i - 1)];
}
dp[0] = 1;
for (int i = 1; i < (1 << n); i++) {
int num = lowbit (i);
if (i != num) {
dp[i] = dp[i - num] + dp[num];
}
}
for (int i = 1; i < (1 << n); i++) {
for (int j = i; j; j--, j &= i) {
if (dp[i] && dp[i] == 2 * dp[j]) {
res++;
break;
}
}
}
cout << res << endl;
return 0;
}