BZOJ2460: [BeiJing2011]元素

来源:互联网 发布:sopcast网络电视官网 编辑:程序博客网 时间:2024/06/05 07:03

BZOJ2460: [BeiJing2011]元素

线性基

题解:

线性基网上有很多讲解了,不再赘述。

明白了线性基之后这题就是裸题了。
为了价值最大,按照价值排个序,先插入价值大的即可。

Code:

#include <algorithm>#include <iostream>#include <cstring>#include <cstdio>using namespace std;typedef long long LL;const int N = 1005;const int LOG = 62;LL lb[LOG+1];int n;struct Data{    int val; LL id;} a[N];bool cmp(const Data &a, const Data &b){    return a.val > b.val;}int main(){    cin>>n;    for(int i=1;i<=n;i++){        scanf("%lld%d",&a[i].id,&a[i].val);    }    sort(a+1,a+1+n,cmp);    int ans=0;    for(int i=1;i<=n;i++){        for(int j=LOG;j>=0;j--){            if((a[i].id>>j)&1){                if(!lb[j]){                    lb[j]=a[i].id;                    break;                }                a[i].id^=lb[j];            }        }        if(a[i].id) ans+=a[i].val;    }    printf("%d\n",ans);}
阅读全文
0 0