给一个数组 \(a_1, a_2, \cdots, a_n\) ,定义 \(s = \sum_{i = 1}^{n} a_i\) 。
询问有多少个 \(a\) 的子序列满足 \(\sum a_{i_k} = s - 1\) 。
显然要选出一个 \(1\) 不加入子序列,任意一个 \(0\) 可以加入或不加入子序列。
于是 \(ans = \binom{cnt1}{1} \cdot 2^{cnt0}\) 。
#include <bits/stdc++.h>
void solve() {
int n; std::cin >> n;
int cnt1 = 0, cnt0 = 0;
for (int i = 1, x; i <= n; i++) {
std::cin >> x;
cnt1 += (x == 1);
cnt0 += (x == 0);
}
std::cout << 1LL * cnt1 * (1LL << cnt0) << "\n";
}
signed main() {
int _ = 1; std::cin >> _;
while (_--) solve();
return 0;
}
- Subsequences Codeforces Luntik Round 750subsequences codeforces luntik round subsequences codeforces fibonacci string educational codeforces round rated codeforces round 911 div codeforces round 864 div codeforces round 887 div codeforces round 863 div codeforces round 913 div codeforces round 915 div codeforces round 917 div