bitset類似於bool型別的陣列,乙個元素佔1bits,空間得到極大優化。
std::bitset<16> foo;
std::bitset<16> bar (0xfa2);
std::bitset<16> baz (std::string("0101111001"));
foo: 0000000000000000
bar: 0000111110100010
baz: 0000000101111001
please, enter an 8-bit binary number: 11111111
bitset.all(): true //判斷是否每一位都為1
bitset.any(): true //判斷是否有1
bitset.none(): false //判斷是否全都不為1
bitset.count():8 //統計共有幾位為1
std::bitset<4> foo (std::string("0001"));
std::cout << foo.flip(2) << '\n'; // 0101 把第二位0反轉為1
std::cout << foo.flip() << '\n'; // 1010 全部反轉,0變1,1變0
跟陣列一樣,可以foo[1]=1; // 0010
foo[2]=foo[1]; // 0110
std::bitset<4> foo (std::string("1011"));
std::cout << foo.reset(1) << '\n'; // 1001 把第一位reset,變為0
std::cout << foo.reset() << '\n'; // 0000 全部reset,全0
std::bitset<4> foo;
std::cout << foo.set() << '\n'; // 1111 全部set為1
std::cout << foo.set(2,0) << '\n'; // 1011 第二位set為0,引數預設為1,可修改
std::cout << foo.set(2) << '\n'; // 1111 第二位set為1
bitset.size() //bitset有多少個bits,也即是bitset的大小
bitset.test(i) //測試第i位,為1返回true,為0返回false
bitset.to_string();
bitset.tollong(); //返回unsigned long long
bitset.to_ulong(); //返回unsigned long
bitsetb,a; //s種類數不多於100*100*100,所以bitset開1e6
//bitset的第i位為1,表示可以得到該結果,最後統計1的個數,就是最終答案
//對於當前的l,r 算出有多少個結果,再加到上一次的bitset中
int main()
b=a;
a.reset();
}printf("%d\n",b.count());
return 0;
}
牛客練習賽22題解
簡單瞎搞題 不會用bitset,所以沒做出來。實際上還是比較簡單的。include using namespace std bitset 1000005 dp 2 int main cout 2 count 簡單資料結構1 這裡要運用拓展尤拉定理。ab modp ab p b p p 0 modp ...
牛客練習賽 22 A
給6個火柴棍,問能不能拼成 熊 或者 象 熊 4根棍子長度一樣,另外2根棍子長度不一樣 象 4根棍子長度一樣,另外2根棍子長度一樣。如果可以拼出熊,輸出 bear 如果可以拼出象,輸出 elephant 如果都不可以拼出,輸出 hernia 一行六個數表示每個火柴棍的長度輸出一行乙個字串表示答案示例...
牛客練習賽 22 c bitset
一共有 n個數,第 i 個數是 xix i可以取 l i r i 中任意的乙個值。設第一行乙個數 n。然後 n 行,每行兩個數表示 li ri。輸出一行乙個數表示答案。include bits stdc h define maxx 1000009 using namespace std bitset...