实在是出题人良心的馈赠,将为每位选手的oi之路上平添一份助力。

description

solution:

这道题才是真正的签到题,且题目还保证了\(q_i\)互不相同
对于第\(k\)位为1的情况,如果当前的动物中没有这一位为1的,那么这位就必须选0
不妨设有\(cnt\)位是自由的,那么答案就是\(2^{cnt}-n\)
注意开\(unsigned\ long\ long\)以及特判\(2^{64}\)的情况

code:

#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N=70;
ll a;
int n,m,c,k;
bool flag[N];
inline ll read()
{
	ll s=0,w=1; char ch=getchar();
	for(;!isdigit(ch);ch=getchar())if(ch=='-')w=-1;
	for(;isdigit(ch);ch=getchar())s=(s<<1)+(s<<3)+(ch^48);
	return s*w;
}
int main()
{
	scanf("%d%d%d%d",&n,&m,&c,&k);
	for(int i=1;i<=n;++i)
	{
		ll x=read();a|=x;
	}
	for(int i=1;i<=m;++i)
	{
		int p,q;scanf("%d%d",&p,&q);
		if((!((a>>p)&1))&&(!flag[p]))--k,flag[p]=1;
	}
	ll ans=0ull;
	if(k==64)
	{
		if(!n)return puts("18446744073709551616"),0;
		else ans=18446744073709551615ull,--n;
	}
	else ans=1ull<<k;
	cout<<ans-1ull*n<<endl;
	return 0;
}

相关文章:

  • 2019-10-30
  • 2022-12-23
  • 2021-12-30
  • 2019-09-04
  • 2021-05-20
  • 2021-07-30
  • 2022-02-08
  • 2021-06-01
猜你喜欢
  • 2021-12-12
  • 2021-06-12
  • 2021-05-15
  • 2021-06-26
  • 2022-12-23
  • 2021-08-15
  • 2019-10-28
相关资源
相似解决方案