求助,不知道为什么60诶
查看原帖
求助,不知道为什么60诶
34530
子谦。楼主2022/7/29 09:37

看了题解,感觉跟题解写的差不多呀,实在是不明白了

#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cctype>
#define ll long long
#define gc getchar
#define maxn 1005
#define maxm 65
using namespace std;

inline ll read(){
	ll a=0;int f=0;char p=gc();
	while(!isdigit(p)){f|=p=='-';p=gc();}
	while(isdigit(p)){a=(a<<3)+(a<<1)+(p^48);p=gc();}
	return f?-a:a;
}int n,ans;
ll d[maxm];

struct ahaha{
	int w;ll a;
	inline bool friend operator<(const ahaha x,const ahaha y){
		return x.w>y.w;
	}
}a[maxn];

int main(){
	n=read();
	for(int i=1;i<=n;++i)
		a[i].a=read(),a[i].w=read();
	sort(a+1,a+n+1);
	for(int i=1;i<=n;++i)
		for(int j=62;~j;--j)
			if((1<<j)&a[i].a)
				if(d[j])a[i].a^=d[j];
				else{
					d[j]=a[i].a;
					ans+=a[i].w;
					break;
				}
	printf("%d\n",ans);
	return 0;
}
2022/7/29 09:37
加载中...