loj515贪心只能过样例

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;
}
View Code
原文地址:https://www.cnblogs.com/Kong-Ruo/p/7895973.html