This commit is contained in:
Zengtudor 2024-10-04 00:51:00 +08:00
parent 2003de2e1b
commit bf9dc139db

View File

@ -36,22 +36,22 @@ ReadNumber<ull> readull;
int main(){ int main(){
cin>>n>>m>>c>>k; cin>>n>>m>>c>>k;
if(n==0 && m==0 && k==64){ if(n==0 && m==0 && k==64){ //特判
cout<<"18446744073709551616\n"; cout<<"18446744073709551616\n";
return 0; return 0;
} }
for(ull i=0;i<n;i++){ for(ull i=0;i<n;i++){
cin>>input; cin>>input;
num |= input; num |= input; //所有编号占用的'1'的位置,把他并在一起
} }
for(ull i=0;i<m;i++){ for(ull i=0;i<m;i++){
cin>>p>>q; cin>>p>>q;
if(!((num>>p)&1) && !bt[p]){ if(!((num>>p)&1) && !bt[p]){ //已有的n个编号里面没有出现过的规则并且还未标记,bt用来去重
k--; k--;
bt[p]=true; bt[p]=true;
} }
} }
for(int i=0;i<k;i++)ans*=2; for(int i=0;i<k;i++)ans*=2; //此时ans=所有(未排除n个已用规则),可以用的二进制位的组合
cout<<ans-n<<'\n'; cout<<ans-n<<'\n';//注意这里要去重
} }