This commit is contained in:
Zengtudor 2024-10-04 11:42:50 +08:00
parent 3dd0e20f21
commit 5ffc1ba92f

View File

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