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
牛客练习赛22 C 简单瞎搞题
猜你喜欢
转载自www.cnblogs.com/tingtin/p/9316069.html
今日推荐
周排行