BZOJ3687 简单题 dp+bitset

编程入门 行业动态 更新时间:2024-10-24 10:19:57

BZOJ3687 <a href=https://www.elefans.com/category/jswz/34/1770983.html style=简单题 dp+bitset"/>

BZOJ3687 简单题 dp+bitset

给出n个数,求所有子集和的异或和。n<=2e6.

正常情况下就是一个01背包,但是范围过大会TLE

于是用bitset优化一下这个bool dp

bitset的第i位表示和为i出现次数的奇偶性

这个东西可以像位运算一样操作,比较方便但是好像用的不多。。

#include<bits/stdc++.h>
#define LL long long
#define clr(x,i) memset(x,i,sizeof(x))
using namespace std;
const int N=2000005;
bitset<N> a;
int n;
int main()
{scanf("%d",&n);int x,sum=0,ans=0;for(int i=1;i<=n;i++){scanf("%d",&x);a^=(a<<x);a[x]?a[x]=0:a[x]=1;sum+=x;//for(int i=0;i<=sum;i++)printf("%d ",a[i]?1:0);puts("");}for(int i=1;i<=sum;i++)if(a[i])ans^=i;printf("%d",ans);return 0;
} 


更多推荐

BZOJ3687 简单题 dp+bitset

本文发布于:2024-02-06 07:41:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1747796.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:简单   bitset   dp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!