灵异事件
  • 板块学术版
  • 楼主Hanghang
  • 当前回复20
  • 已保存回复20
  • 发布时间2021/2/18 22:06
  • 上次更新2023/11/5 03:05:42
查看原帖
灵异事件
178992
Hanghang楼主2021/2/18 22:06

我在做P4570时发生了一个灵异事件

这样,是对的,100分

long long s,n,a[L];

这样,是错的,0分

long long n,a[L],s;

为什么?

附上AC代码

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

const int L=61;
long long s,n,a[L];
struct SB
{
	long long b,c;
}k[1003];
bool C(SB A,SB B)
{
	return A.c>B.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;
		}
		for(int j=i-1;j>=0;j--)
			if(x&(1l<<j))x^=a[j];
		for(int j=L;j>i;j--)
			if(a[j]&(1l<<i))a[j]^=x;
		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 22:06
加载中...