bitset练习题。。。
位运算真的是玄学。。。
一开始真的“只能过样例”
后来发现把左移写成了小于号
鬼知道我在想什么/手动微笑
loj第一题
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<algorithm> #include<vector> #include<queue> #include<set> #include<map> #include<stack> #include<bitset> #define ll unsigned long long #define pi 3.14 #define eps 1e-9 #define inf 2147483233 #define m(a) memset(a,0,sizeof(a)) #define M(a) memset(a,127,sizeof(a)) #define REP(i,m,n) for(int i=1;i<=n;i++) #define DWN(i,n,m) for(int i=n;i>=1;i++) #define lowbit(x) x&(-x) using namespace std; inline int read() { int x=0,f=1; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();} while(isdigit(ch)){x=10*x+ch-'0';ch=getchar();} return x*f; } inline void write(int x) { int num=0; char buf[15]; while(x)buf[++num]=(x%10)+'0',x/=10; while(num)putchar(buf[num--]); putchar(' '); } int n,l,r; bitset<1010101>bs[2]; int main() { n=read(); bs[0][0]=1; for(int i=1;i<=n;i++) { l=read(),r=read(); for(int j=l;j<=r;j++) bs[i&1]|=(bs[!(i&1)]<<(j*j)); bs[!(i&1)].reset(); } write(bs[(n&1)].count()); return 0; }