結果
| 問題 |
No.2152 [Cherry Anniversary 2] 19 Petals of Cherry
|
| コンテスト | |
| ユーザー |
hotman78
|
| 提出日時 | 2022-12-09 07:22:03 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 75 ms / 1,000 ms |
| コード長 | 809 bytes |
| コンパイル時間 | 2,072 ms |
| コンパイル使用メモリ | 197,680 KB |
| 最終ジャッジ日時 | 2025-02-09 06:46:44 |
|
ジャッジサーバーID (参考情報) |
judge5 / 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;
}
hotman78