70分求助
查看原帖
70分求助
357641
YyuanDa楼主2020/11/8 21:48
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef unsigned long long ull;
ull n,m,c,k;
const int N=1000005;
ull a,animal;
int food[70];
void init() {
//	freopen("zoo.in","r",stdin);
//	freopen("zoo.out","w",stdout);
	scanf("%llu%llu%llu%llu",&n,&m,&c,&k);
	for(int i=1; i<=n; i++) {
		scanf("%llu",&a);
		animal|=a;
	}
	for(int i=1; i<=m; i++) {
		int p,q;
		scanf("%d%d",&p,&q);
		if(!food[p]) food[p]=1;
	}
}
ull pow(ull x) {
	ull res=1;
	for(ull i=1; i<=x; i++) res*=2;
	return res;
}
int main() {
	init();
	ull t=k;
	for(int i=0; i<k; i++) {
		int b1=animal&(1<<i),b2=food[i];
		if(b1==0&&b2!=0) t--;
	}
	ull ans;
	if(t<64) ans=pow(t)-n;
	else {
		ans=pow(63);
		ans--,ans<<=1,ans-=n,ans+=2;
	}
	if(k==64&&n==0&&m==0) {
//		ull tmp=pow(63);
//		tmp--,tmp<<=1,tmp++;
//		ull pp=tmp%10;
//		tmp/=10;
//		printf("%llu%llu",tmp,pp);
		printf("18446744073709551616");
	}
	else printf("%llu",ans);
	return 0;
}

特判了还只有70,,暴毙

2020/11/8 21:48
加载中...