Bitsetoperator~()const{ Bitset ret;for(inti=0;i<1600;i++)ret.a[i]=~a[i];returnret; } Bitsetoperator&(constBitset &b)const{ Bitset ret;for(inti=0;i<1600;i++)ret.a[i]=a[i]&b.a[i];returnret; } Bitsetoperator|(constBitset &b)const{ Bitset ret;for(inti=0;i<1600;i++)re...
使用bitset代替使用手写位操作代码可以提高代码的可读性和可维护性。bitset是C++标准库中的一种容器,它可以用来表示一串二进制位,并提供了一系列操作这些位的方法。使用bitset可以避免手动编写位操作代码,减少出错的可能性,并提高代码的可读性和可维护性。
Update: stl 的 bitset 并不慢(大概比手写还快一些??),除以 32 还是 64 看机子的位数,需要注意的是 stl 的构造函数在不开 O2 的情况下还是比较慢的。rt, 有一道玄学题好像可以用bitset, 但时间复杂度为Θ(1e5∗1e632)Θ(1e5∗1e632), 于是手写bitset, 发现用__int128反而比ull慢, 所以一下代码用...
ull bit[470];intlen, Mex, Num;voidreset(){for(inti =0; i <= len; ++i) bit[i] =0; len =0; Num = Mex =0;}voidoperator|= (constBitset &rhs) {chmax(len, rhs.len);for(inti =0; i <= len; ++i) bit[i] |= rhs.bit[i]; }voidoperator|= (intx) {chmax(len, x >>...
BZOJ_2208_[Jsoi2010]连通数_强连通分量+拓扑排序+手写bitset Description Input 输入数据第一行是图顶点的数量,一个正整数N。 接下来N行,每行N个字符。第i行第j列的1表示顶点i到j有边,0则表示无边。 输入数据第一行是图顶点的数量,一个正整数N。 接下来