求助,后四十分全WA
查看原帖
求助,后四十分全WA
534800
管泽昊1691楼主2021/10/19 16:58
#include <bits/stdc++.h>
#define int unsigned long long

using namespace std;
const int N = 1000;
const int M = 1e8 + 9;

bool flag[M];
int n,m,k,c;
int pan;
//
//inline void write(int x)
//{
//    if(x<0){
//    	putchar('-');
//		x=-x;
//	}
//    if(x>9) 
//		write(x/10);
//    putchar(x%10+'0');
//}
//
//inline int read()
//{
//	int s=0,f=1;
//	char ch=getchar();
//	while(ch<'0'||ch>'9'){
//		if(ch=='-')
//			f=-1;
//		ch=getchar();
//	}
//	while(ch>='0'&&ch<='9'){
//		s=s*10+ch-'0';
//		ch=getchar();
//	}
//	return s*f;
//}
vector<int>f[N];

bool vis[N];

signed main(){
	cin >> n >> m >> c >> k;
//	n=read(),m=read(),c=read(),k=read();
	for(int i = 1;i <= n;i ++){
		int a;
		cin >> a;
//		a=read();
		pan = pan | a;
	}
	for(int i = 1;i <= m;i ++){
		int a,b;
//		a=read(),b=read();
		cin >> a >> b;
		f[a].push_back(b);
	}
	
	int g = pan;
	
	for(int i = 0;i < 64;i ++){
		int a = (pan & 1);
		pan = (pan >> 1);
		
		if(a){
			for(int j = 0;j < f[i].size();j ++){
				flag[f[i][j]] = true;
			}
		}		
	}
	
	int ans = (1 << k);
	ans -= n;
	 
	int wei = k - 1;
	
	for(int i = 0;i < 64;i ++){
		for(int j = 0;j < f[i].size();j ++){
			if(flag[f[i][j]] == false){
				if(wei >= 0) {
					ans -= (1 << wei);
					wei--;
				} 				
				break;
			}
		}
	}
	
	cout << ans << endl;
	
}
2021/10/19 16:58
加载中...