编号 题目 状态 分数 总时间 内存 代码 / 答案文件 提交者 提交时间
#22884 #1121. jwp的幸运集合(弱化版) Accepted 100 23 ms 356 K C++ / 995 B 电类935-郑新宇 2020-02-15 11:31:42
显示原始代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <map>
using namespace std;
int n, k, a[40], ans;
map<int, int> m1, m2;
// m1表示奇数个,m2表示偶数个
int main() {
    cin >> n;
    k = n >> 1;
    for (int i = 0; i < n; i++) cin >> a[i];
    int ma = 1 << k;
    for (int i = 1; i < ma; i++) {
        int sum = 0, cnt = 0;
        //状态压缩
        for (int j = 0; j < k; j++)
            if ((i >> j) & 1)
                cnt++, sum += a[j];
        //右移j位若末位是1说明该选择中有a[j]
        // a[]的下标要从0开始,右移0位就是自身,同理退后
        if (cnt & 1)
            m1[sum]++;  //奇数个和为sum的数量加一
        else {
            m2[sum]++;  //偶数个和为sum的数量加一
            if (!sum)
                ans++;  //符合题意的
        }
    }
    ma = 1 << (n - k);
    for (int i = 1; i < ma; i++) {
        int sum = 0, cnt = 0;
        for (int j = 0; j < n - k; j++)
            if ((i >> j) & 1)
                cnt++, sum += a[j + k];
        if (cnt & 1)
            ans = ans + m1[-sum];  //两个奇数个集合,-sum保证和为0
        else {
            ans = ans + m2[-sum];
            if (!sum)
                ans++;
        }
    }
    cout << ans;
    return 0;
}
子任务 #1
Accepted
得分:100
测试点 #1
Accepted
得分:100
用时:3 ms
内存:272 KiB

输入文件(1.in

7
50000000 -50000000 50000000 -50000000 50000000 -50000000 50000000 

答案文件(1.ans

34

用户输出

34

系统信息

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

输入文件(2.in

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

答案文件(2.ans

69

用户输出

69

系统信息

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

输入文件(3.in

1
50000000 

答案文件(3.ans

0

用户输出

0

系统信息

Exited with return code 0
测试点 #4
Accepted
得分:100
用时:2 ms
内存:300 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
内存:352 KiB

输入文件(5.in

3
5 -4 -1

答案文件(5.ans

0

用户输出

0

系统信息

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

输入文件(6.in

1
0

答案文件(6.ans

0

用户输出

0

系统信息

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

输入文件(7.in

6
4 2 2 -2 0 -2

答案文件(7.ans

6

用户输出

6

系统信息

Exited with return code 0
测试点 #8
Accepted
得分:100
用时:2 ms
内存:356 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
内存:264 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
用时:2 ms
内存:272 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