牛客练习赛22 C 简单瞎搞题

 1 //位运算 
 2 //  & 都是1 才是 1
 3 // | 都是0 才是0
 4 // ^  不一样才是1
 5 #include <iostream>
 6 #include <cstdio>
 7 #include <bitset>
 8 using namespace std;
 9 const int N=1e6+9;
10 bitset<N>dp[105];
11 int main()
12 {
13     dp[0][0]=1;
14     int n,l,r;
15     scanf("%d",&n);
16     for(int i=1;i<=n;i++){
17         scanf("%d%d",&l,&r);
18         dp[i].reset();//清0
19         for(int j=l;j<=r;j++){
20             dp[i]|=dp[i-1]<<j*j;//用1的个数来代表种类数
21             //加上某个数就要左移几位,
22             //eg 第3位是1,那么就表示此时2是当下和的一个数
23         }
24     }
25     printf("%d\n",dp[n].count());//有几个1
26     return  0;
27 }


// 这是一个讲解bitset 的博客 https://www.cnblogs.com/magisk/p/8809922.html

猜你喜欢

转载自www.cnblogs.com/tingtin/p/9316069.html