9299: USACO 2012 US Open, Gold Division —— Problem 3. Balanced Cow Subsets
[Creator : ]
Description
Farmer John's owns $N\ (2 \leq N \leq 20)$ cows, where cow $i$ produces $M(i)$ units of milk each day $(1 \leq M(i) \leq 100,000,000)$. FJ wants to streamline the process of milking his cows every day, so he installs a brand new milking machine in his barn. Unfortunately, the machine turns out to be far too sensitive: it only works properly if the cows on the left side of the barn have the exact same total milk output as the cows on the right side of the barn!
Let us call a subset of cows "balanced" if it can be partitioned into two groups having equal milk output. Since only a balanced subset of cows can make the milking machine work, FJ wonders how many subsets of his N cows are balanced. Please help him compute this quantity.
我们定义一个奶牛集合 $S$ 是平衡的,当且仅当满足以下两个条件:
- $S$ 非空。
- $S$ 可以被**划分**成两个集合 $A,B$,满足 $A$ 里的奶牛产奶量之和等于 $B$ 里的奶牛产奶量之和。划分的含义是,$A\cup B=S$ 且 $A\cap B=\varnothing$。
现在给定大小为 $n$ 的奶牛集合 $S$,询问它有多少个子集是平衡的。请注意,奶牛之间是互不相同的,但是它们的产奶量可能出现相同。
Let us call a subset of cows "balanced" if it can be partitioned into two groups having equal milk output. Since only a balanced subset of cows can make the milking machine work, FJ wonders how many subsets of his N cows are balanced. Please help him compute this quantity.
我们定义一个奶牛集合 $S$ 是平衡的,当且仅当满足以下两个条件:
- $S$ 非空。
- $S$ 可以被**划分**成两个集合 $A,B$,满足 $A$ 里的奶牛产奶量之和等于 $B$ 里的奶牛产奶量之和。划分的含义是,$A\cup B=S$ 且 $A\cap B=\varnothing$。
现在给定大小为 $n$ 的奶牛集合 $S$,询问它有多少个子集是平衡的。请注意,奶牛之间是互不相同的,但是它们的产奶量可能出现相同。
Input
第一行一个整数 $n$,表示奶牛的数目。
第 $2$ 至 $n+1$ 行,每行一个数 $a_i$,表示每头奶牛的产奶量。
第 $2$ 至 $n+1$ 行,每行一个数 $a_i$,表示每头奶牛的产奶量。
Output
输出一个数表示方案总数。
Constraints
对于全部数据,保证 $1\le n\le 20$,$1\le a_i\le 10^8$。
Sample 1 Input
4
1
2
3
4
Sample 1 Output
3
共存在三种方案。集合 $\{1,2,3\}$ 可以划分为 $\{1,2\}$ 与 $\{3\}$;集合 $\{1,3,4\}$ 可以划分为 $\{1,3\}$ 与 $\{4\}$;集合 $\{1,2,3,4\}$ 可以划分为 $\{1,4\}$ 与 $\{2,3\}$,共 $3$ 种子集。