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