- #include#include#include#include#include using namespace std;
- typedef long long ll;
- const int N = (1 << 20) + 5;
- inline int read() {
- char c = getchar();
- int x = 0,
- f = 1;
- while (c < '0' || c > '9') {
- if (c == ' - ') f = -1;
- c = getchar();
- }
- while (c >= '0' && c <= '9') {
- x = x * 10 + c - '0';
- c = getchar();
- }
- return x * f;
- }
- int n,
- m,
- f[N],
- sum[N],
- All;
- int main() {
- //freopen("in","r",stdin);
- n = read();
- for (int i = 0; i1 < read(); m = read();
- for (int i = n; i1 < read(); All = 1 << (n + m);
- for (int i = 1; i) {
- int lowbit = i & -i;
- sum[i] = sum[i - lowbit] + sum[lowbit];
- for (int j = 0; j) if (i & (1 << (j - 1))) f[i] = max(f[i], f[i - (1 << (j - 1))]);
- f[i] += sum[i] == 0;
- }
- printf("%d", n + m - 2 * f[All - 1]);
- }
来源: http://www.bubuko.com/infodetail-1972167.html