BZOJ-6-2460: [BeiJing2011]元素-线性基

时间:2023-03-09 18:50:48
BZOJ-6-2460: [BeiJing2011]元素-线性基

链接 :https://www.lydsy.com/JudgeOnline/problem.php?id=2460

思路 :线性基不唯一,所以排序 进行贪心选择,价值最大的线性基,

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define maxn 123
ll n,ans,p[maxn];
struct node
{
ll a,b;
bool operator<(const node &c)const
{
return b>c.b;
}
} ss[maxn];
void getji(ll x,int id)
{
for(int i=62; i>=0; i--)
{
if(!(x>>(ll)i))
continue;
if(!p[i])
{
p[i]=x;
break;
}
x^=p[i];
}
if(x!=0)ans+=ss[id].b;
}
int main()
{
scanf("%lld",&n);
for(int i=1; i<=n; i++)
scanf("%lld%lld",&ss[i].a,&ss[i].b);
sort(ss+1,ss+n+1);
for(int i=1; i<=n; i++)
getji(ss[i].a,i);
printf("%lld\n",ans);
return 0;
}