链接:https://www.nowcoder.com/acm/contest/132/C
来源:牛客网
题目
一共有 n个数,第 i 个数是 xi
xi 可以取 [li , ri] 中任意的一个值。
设 输入描述:
第一行一个数 n。i
然后 n 行,每行两个数表示 l
,ri
。
输出描述:
输出一行一个数表示答案。
备注:
1 ≤ n , li , ri ≤ 100
这题用bitset暴力可以出
然后我去学了一个上午的bitset ,位操作还是骚啊
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e6 + 10; 4 bitset<maxn>ans, cnt; 5 int n; 6 int main() { 7 scanf("%d", &n); 8 ans[0] = 1; 9 for (int i = 0 ; i < n ; i++) { 10 int x, y, k = 0; 11 cnt.reset(); 12 scanf("%d%d", &x, &y); 13 for (int j = x ; j <= y ; j++) { 14 cnt |= (ans <<= (j * j - k)); 15 k = j * j; 16 } 17 ans = cnt; 18 } 19 printf("%d ", ans.count()); 20 return 0; 21 }