牛客練習賽 22 c bitset

2021-08-21 11:48:03 字數 1495 閱讀 6626

一共有 n個數,第 i 個數是 xix

i可以取 [l

i , r

i] 中任意的乙個值。

第一行乙個數 n。 

然後 n 行,每行兩個數表示 li

,ri。

輸出一行乙個數表示答案。

#include "bits/stdc++.h"

#define maxx 1000009

using namespace std;

bitsetdp[105];

int main(){

int n,l,r;

cin>>n;

dp[0][0]=1;

for(int i=1;i<=n;i++){

cin>>l>>r;

dp[i].reset();

for(int j=l;j<=r;j++){

dp[i]=dp[i]|(dp[i-1]<

遍歷每個區間的值,使他們相加,從0個位置開始,陣列中的第i位表示為可組成的數i,將第i位置0【可組成的數=1所在的位置數】,用count()計算出bitset裡面含有的1的個數,則是可以組成的所有數的個數

初始化bitset物件的方法

bitsetb;

b有n位,每位都為0

bitset

<

n> b(

u);b是unsigned long型u的乙個副本

bitset

<

n> b(

s);b是string物件s中含有的位串的副本

bitset

<

n> b(

s, pos, n);

b是s中從位置pos開始的n個位的副本

b.any()

b中是否存在值為1的二進位制位?b.

none

()b中不存在值為1的二進位制位嗎?b.

count

()b中值為1的二進位制位的個數b.

size

()b中二進位制位的個數b[

pos]

訪問b中在pos處的二進位制位b.

test

(pos

)b中在pos處的二進位制位是否為1?b.

set()

把b中所有二進位制位的值為1b.

set(

pos)

把b中在pos處的二進位制位值為1b.

reset

()把b中所有二進位制位的值為0b.

reset

(pos

)把b中在pos處的二進位制位值為0b.

flip

()把b中所有二進位制位逐位取反b.

flip

(pos

)把b中在pos處的二進位制位取反b.

to_ulong

()用b中同樣的二進位制位返回乙個unsigned long值

os<

b把b中的位集輸出到os流

分組揹包 牛客練習賽22C bitset優化

link 一共有 n個數,第 i 個數是 x ix i xi x ix i xi 可以取 li ri l i r i li r i 中任意的乙個值。設 s xi 2s sum 2 s xi 2,求 s 種類數。這一題主要用的是分類揹包的思想,dp i j dp i j dp i j 表示的是考慮到第...

牛客練習賽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 一行六個數表示每個火柴棍的長度輸出一行乙個字串表示答案示例...