编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#22761 #1121. jwp的幸运集合(弱化版) Accepted 100 29 ms 412 K C++ / 1.6 K Rhodoks 2020-02-14 16:19:36
显示原始代码
#include <bits/stdc++.h>
using namespace std;
typedef map<int, int> Map;
Map odd, even;
int all[40];
int add(int flag, int beg, int end, int arr[]) {
    int temp = flag;
    int sum = 0;
    for (int i = beg; i < end; i++) {
        if ((temp & 1) >= 1) {
            sum += arr[i];
            //  printf("+%d",arr[i]);
        }
        temp >>= 1;
    }
    // printf("\n");
    return sum;
}
int count_one_bits(int n) {
    int count = 0;
    while (n) {
        n = (n & (n - 1));
        count++;
    }
    return count;
}
int main() {
    int n;
    scanf("%d", &n);
    int left = n / 2;
    // int right=n-left;
    // int le[left]={0},ri[right]={0};

    memset(all, 0, sizeof(all));
    for (int i = 0; i < n; i++) {
        cin >> all[i];
    }
    int flag = 1;
    while (flag < pow(2, left)) {
        int sum = add(flag, 0, left, all);
        // printf("%dsum1=%d count=%d\n",flag,sum,count_one_bits(flag));
        (count_one_bits(flag) % 2 == 0) ? even[sum]++ : odd[sum]++;
        // printf("!!%d ",odd[1]);
        flag++;
    }
    int k = even[0];
    flag = 1;
    while (flag < pow(2, n - left)) {
        int sum = add(flag, left, n, all);
        // printf("%dsum2=%d count=%d\n",flag,sum,count_one_bits(flag));
        if (count_one_bits(flag) % 2 == 0) {
            if (sum == 0)
                k++;
            k += even[-sum];
            // printf("k=%d\n",k);
        } else {
            k += odd[-sum];
            // printf("k=%d\n",k);
        }
        flag++;
    }
    // for(int i=0;i<n;i++){
    //  cout<<all[i]<<endl;
    //}
    cout << k << endl;
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:3 ms
内存:352 KiB

输入文件(1.in

7
50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 

答案文件(1.ans

34

用户输出

34

系统信息

Exited with return code 0
测试点 #2
Accepted
得分:100
用时:4 ms
内存:412 KiB

输入文件(2.in

8
50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 -50000000 

答案文件(2.ans

69

用户输出

69

系统信息

Exited with return code 0
测试点 #3
Accepted
得分:100
用时:2 ms
内存:352 KiB

输入文件(3.in

1
50000000 

答案文件(3.ans

0

用户输出

0

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:3 ms
内存:292 KiB

输入文件(4.in

20
50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 -50000000 50
<93 bytes omitted>

答案文件(4.ans

184755

用户输出

184755

系统信息

Exited with return code 0
测试点 #5
Accepted
得分:100
用时:3 ms
内存:260 KiB

输入文件(5.in

3
5 -4 -1

答案文件(5.ans

0

用户输出

0

系统信息

Exited with return code 0
测试点 #6
Accepted
得分:100
用时:3 ms
内存:304 KiB

输入文件(6.in

1
0

答案文件(6.ans

0

用户输出

0

系统信息

Exited with return code 0
测试点 #7
Accepted
得分:100
用时:3 ms
内存:280 KiB

输入文件(7.in

6
4 2 2 -2 0 -2

答案文件(7.ans

6

用户输出

6

系统信息

Exited with return code 0
测试点 #8
Accepted
得分:100
用时:3 ms
内存:312 KiB

输入文件(8.in

20
50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 50000000 5000000
<82 bytes omitted>

答案文件(8.ans

0

用户输出

0

系统信息

Exited with return code 0
测试点 #9
Accepted
得分:100
用时:2 ms
内存:284 KiB

输入文件(9.in

18
0 0 -1 -1 2 2 -4 -4 8 8 -16 -16 32 32 -64 128 -256 128 

答案文件(9.ans

255

用户输出

255

系统信息

Exited with return code 0
测试点 #10
Accepted
得分:100
用时:3 ms
内存:284 KiB

输入文件(10.in

20
0 0 1 1 -2 -2 -2 -2 4 4 8 8 -56 -56 16 16 16 2 2 1 1

答案文件(10.ans

3235

用户输出

3235

系统信息

Exited with return code 0