90分求助,#17,#18WA(已经加了特判)
查看原帖
90分求助,#17,#18WA(已经加了特判)
332304
寺中言楼主2020/11/22 23:33
#include<bits/stdc++.h>
using namespace std;
inline void readi(int &x){
	x=0;
	int y=1;
	char a;
	a=getchar();
	while(a<'0'||a>'9'){
		if(a=='-')y=-1;
		a=getchar();
	}
	while(a>='0'&&a<='9'){
		x=x*10+a-'0';
		a=getchar();
	}
	x*=y;
}
inline void readu(unsigned long long &x){
	x=0;
	int y=1;
	char a;
	a=getchar();
	while(a<'0'||a>'9'){
		if(a=='-')y=-1;
		a=getchar();
	}
	while(a>='0'&&a<='9'){
		x=x*10+a-'0';
		a=getchar();
	}
	x*=y;
}
int n,m,c,k;
unsigned long long a;
unsigned long long fans;
bool fz[1888];
bool fs[1888];
int main(){
	readi(n);readi(m);readi(c);readi(k);
	if(n==0&&k==64){
		cout<<"18446744073709551616"<<endl;
		return 0;
	}
	for(int i=1;i<=n;++i){
		readu(a);
		int ffz=0;
		while(a>0){
			if(a%2!=0)fz[ffz]=true;
			a/=2;
			++ffz;
		}
	}	
	for(int i=1;i<=m;++i){
		int a1,b;
		readi(a1);readi(b);
		fs[a1]=true;
	}
	int qfz=0;
	for(int i=1;i<=k;++i){
		if(!fs[i]||(fs[i]&&fz[i]))++qfz;
	}
	if(qfz==64){
		for(int i=1;i<=63;++i){
		fans*=2;
    	}
    	fans=(fans-1)*2-n+2;
		cout<<fans<<endl;
		return 0;
	}
	fans=1;
	for(int i=1;i<=qfz;++i){
		fans*=2;
	}
	fans-=n;
	cout<<fans<<endl;
	return 0;
}

一脸懵…… 考场没特判85,加了特判才90。请大佬们帮忙看看

2020/11/22 23:33
加载中...