牛客練習賽22 C 簡單瞎搞題(bitset)

2021-08-21 10:59:25 字數 1885 閱讀 8464

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...