結果
問題 | No.2152 [Cherry Anniversary 2] 19 Petals of Cherry |
ユーザー | hotman78 |
提出日時 | 2022-12-09 07:22:03 |
言語 | C++17(gcc12) (gcc 12.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 77 ms / 1,000 ms |
コード長 | 809 bytes |
コンパイル時間 | 2,202 ms |
コンパイル使用メモリ | 204,976 KB |
実行使用メモリ | 11,520 KB |
最終ジャッジ日時 | 2024-10-14 18:33:51 |
合計ジャッジ時間 | 6,992 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 49 |
ソースコード
#include<bits/stdc++.h> using namespace std; #define rep(i,n) for(int i=0;i<n;++i) using lint=long long; int main(){ constexpr int n=19; array<int,n>l; array<bitset<n>,n>a; rep(i,n){ a[n-1-i]=bitset<n>(); cin>>l[n-1-i]; rep(j,l[n-1-i]){ int x; cin>>x; x--; a[n-1-i][x]=1; } } array<vector<lint>,2>dp; rep(i,2)dp[i].resize(1<<n); dp[0][0]=1; rep(d,(1<<n)-1){ bool cnt=0; int k=__builtin_popcount(d); rep(j,n){ if(d>>j&1){ cnt^=1; }else{ if(a[k][j]){ rep(t,2)dp[t^cnt][d+(1<<j)]+=dp[t][d]; } } } } cout<<dp[0][(1<<n)-1]<<" "<<dp[1][(1<<n)-1]<<endl; }