bitset 发表于 2022-09-21 分类于 小技巧 bitset bitset存一下用法 123456__builtin_popcount (x); //二进制1的个数(uint)__builtin_popcountll (x); //ulonglong__builtin_parity(x); //1的个数的奇偶性__builtin_ctz(x); //二进制末尾0的个数__builtin_clz(x); //二进制开头0的个数31-__builtin_clz(x); //log2x下取整 1234567891011121314bitset<N>a; //压位存储 bool a[1000];a[i]=...; //支持下标访问,a[i]=0/1a.any(); //是否存在1a.none(); //是否无1a.count(); //统计1的个数a.set(); //全变为1; a.set(x); //把第x位变为1a.reset(); //全变为0; a.reset(x); //把第x位变为0a.flip(); //全部翻转; a.flip(x); //把第x位翻转//以下这两个不一定有_Find_first(); //找到第一个1的位置_Find_next(); //找到下一个1的位置(unsigned ll*)&a; //转成ll数组a.to_string(); // 例题BZOJ 3687 简单题f[i][j]:前 i 个数,和为 j 的方案数 f[i][j]=f[i-1][j]^f[i-1][j-a[i]] dp 的类型是 bool -> bitset 优化 DAG计数 BZOJ 4503,两个串 k维数点