记录编号 608483 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 3503.[CSP 2020S]动物园 最终得分 100
用户昵称 Gravatar窝法氦镁烷 是否通过 通过
代码语言 C++ 运行时间 1.018 s
提交时间 2025-10-26 15:25:52 内存使用 3.86 MiB
显示代码纯文本
#include <bits/stdc++.h> 
using namespace std; 
int main() 
{   freopen("2020zoo.in","r",stdin);
	freopen("2020zoo.out","w",stdout);
 int n, m, c, k; scanf("%d%d%d%d", &n, &m, &c, &k);  
  if(k == 64 && n == 0 && m == 0)   
   {        puts("18446744073709551616");       
    return 0;    }    
	unsigned long long x = 0;  // 现存动物的二进制位   
	 unsigned long long y = 0;  // 需要饲料的二进制位   
	  unsigned long long a;    
	  int p, q;    
	  for(int i = 1; i <= n; ++i) scanf("%llu", &a), x |= a;  
	    for(int i = 1; i <= m; ++i) scanf("%d%d", &p, &q), y |= (1ull << p);    // 可养殖动物的二进制应当与现存动物的二进制和不需要饲料的二进制位有关   
		 unsigned long long z = 0;    if(k == 64) z = x | ~y;   
		  else        z = x | (~y & ((1ull << k) - 1));   
		   int cnt = 0;    // 二进制中1的个数    
		   for(; z; z -= z & (-z)) ++cnt;    
		   unsigned long long ans = 0;    
		   if(cnt == 64) ans = (~0ull) - n + 1;    
		   else          
		   ans = (1ull << cnt) - n;    
		   printf("%llu", ans);    
		   return 0; }