1 条题解

  • 0
    @ 2025-10-8 17:09:03

    bitset的每一位表示和为下标的子集出现的次数是奇数还是偶数,每加入一个数,原来的每一个子集就有包含这个数和不包含这个数两种情况,如果不包含,不变,如果包含,子集和加上新数,用bitset表示也就是向左移动那么多位。

    #include <bits/stdc++.h>
    using namespace std;
    const int N=2e6;
    bitset<N+1> f;
    int main()
    {
        int n;scanf("%d", &n);
        f.set(0);
        for (int i=0,x;i<n;++i)scanf("%d",&x),f^=f<<x;
        int ans=0;
        for (int i=1;i<= N;++i) if(f[i])ans^=i;
        printf("%d\n", ans);
        return 0;
    }
    
    • 1

    *【STL:bitset】可重集合的子集的算术和的异或和[简单题]

    信息

    ID
    5352
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    91
    已通过
    26
    上传者