95pts (WA on #16)求助
查看原帖
95pts (WA on #16)求助
251074
学习柯学楼主2024/10/14 23:16
#include<bits/stdc++.h>
using namespace std;
unsigned long long n, m, k, c, i, j, p, q, x, temp, ans;
unsigned long long anm[1000005];
bool a[64];
unsigned long long lowbit(unsigned long long y) {
	return y&-y;
}
int main() {
	//freopen("P7076_16.in","r",stdin);
	//freopen("ans.out","w",stdout);
	cin>>n>>m>>c>>k;
	for(i=1; i<=n; i++) {
		cin>>anm[i];
	}
	for(i=1; i<=m; i++) {
		cin>>p>>q;
		if(a[p]==0)
			x++;
		a[p]=1;
	}
	for(i=1; i<=n; i++) {
		temp=anm[i];
		while(temp) {
			if(a[(unsigned long long)log2(lowbit(temp))]==1) {
				a[(unsigned long long)log2(lowbit(temp))]=0;
				x--;
			}
			temp-=lowbit(temp);
		}
	}
	if(k-x==64&&!n){
		cout<<"18446744073709551616";
		return 0;
	}
	else ans=pow(2,(k-x))-n;
	cout<<ans;
	return 0;
}

跟结果差1,代码结果18014398509177476,正确答案18014398509177475

2024/10/14 23:16
加载中...