BZOJ 2460 [BeiJing2011]元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2460 [BeiJing2011]元素相关的知识,希望对你有一定的参考价值。

【题目分析】

    线性基,由于最多有63个,只需要排序之后,动态的去维护线性基即可。

【代码】

#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
 
#include <set>
#include <map>
#include <string>
#include <algorithm>
#include <vector>
#include <iostream>
#include <queue>
using namespace std;
 
#define maxn 10005
#define ll long long
 
int read()
{
    int x=0,f=1; char ch=getchar();
    while (ch<‘0‘||ch>‘9‘) {if (ch==‘-‘) f=-1; ch=getchar();}
    while (ch>=‘0‘&&ch<=‘9‘) {x=x*10+ch-‘0‘; ch=getchar();}
    return x*f;
}
 
ll lb[65];
struct node{ll n;int w;}a[maxn];
bool cmp(node a,node b)
{return a.w>b.w;}
 
int main()
{
    int n=read();
    int ans=0;
    for (int i=1;i<=n;++i)
        scanf("%lld%d",&a[i].n,&a[i].w);
    sort(a+1,a+n+1,cmp);
    for (int i=1;i<=n;++i)
    {
        for (int j=63;j>=0;--j)
        {
            if ((a[i].n>>j)&1)
            {
                if (!lb[j]) {lb[j]=a[i].n; break;}
                else a[i].n^=lb[j];
            }
        }
        if (a[i].n) ans+=a[i].w;
    }
    printf("%d\n",ans);
}

  

以上是关于BZOJ 2460 [BeiJing2011]元素的主要内容,如果未能解决你的问题,请参考以下文章

bzoj2460[BeiJing2011]元素

[BZOJ2460][BeiJing2011]元素

bzoj2460 BeiJing2011—元素

题解 bzoj2460: [BeiJing2011]元素 (线性基)

BZOJ2460: [BeiJing2011]元素

BZOJ 2460 [BeiJing2011]元素