[BZOJ2460][BeiJing2011]元素(贪心+高斯消元求线性基)

来源:互联网 发布:java计算四舍五入 编辑:程序博客网 时间:2024/05/16 07:17

题目描述

传送门

题解

求极大线性无关向量组,并且权值尽量大
按照权值从大到小排序,贪心用高斯消元求解线性基

代码

#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define LL long long#define N 1005int n,ans,b[N];struct hp{LL num;int val;}a[N];int cmp(hp a,hp b){    return a.val>b.val;}int main(){    scanf("%d",&n);    for (int i=1;i<=n;++i) scanf("%lld%d",&a[i].num,&a[i].val);    sort(a+1,a+n+1,cmp);    for (int i=1;i<=n;++i)        for (int j=59;j>=0;--j)            if (a[i].num>>j&1)            {                if (!b[j]) {b[j]=i;break;}                else a[i].num^=a[b[j]].num;            }    for (int i=0;i<=59;++i) ans+=a[b[i]].val;    printf("%d\n",ans);}
0 0
原创粉丝点击