30分求助
查看原帖
30分求助
178992
Hanghang楼主2021/2/18 20:12

#include<bits/stdc++.h>
using namespace std;

const int L=70;
long long n,a[L],s;
struct SB
{
	long long b,c;
}k[1003];
bool C(SB x,SB y)
{
	return x.c>y.c;
}
bool I(long long x)
{
	for(int i=L;i>=0;i--)
	{
		if((x&(1l<<i))==0)continue;
		if(a[i])
		{
			x^=a[i];continue;
		}
		a[i]=x;return 1;
	}
	return 0;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>k[i].b>>k[i].c;
	}
	sort(k+1,k+n+1,C);
	for(int i=1;i<=n;i++)
	{
		if(I(k[i].b))s+=k[i].c;
	}
	cout<<s<<endl;
	return 0;
}

求助各位大佬们,万分感谢

2021/2/18 20:12
加载中...