ARC103-E:Tr/ee(700)
問題
長さ n の文字列 s が与えられる。以下の条件を満たす n 頂点の木を構築することができるかどうか。
- 頂点 s_i の文字が 1 であれば、木から辺を 1 つ取り除いて、長さ i の連結成分を作ることができる
- 頂点 s_i の文字が 0 であれば、木から辺を 1 つ取り除いて、長さ i の連結成分を作ることができない
※ i は 1-indexed
考え方
まず、木を構築するための必要条件を整理する。以下の条件を満たす場合は目的の木を構築することはできない。
- が (サイズ の木は作ることはできない)
- が ( 本切ることで必ずサイズ の木は作るカットが存在する)
- (あるカットでサイズ の連結成分を作るとき、もう片方のサイズは になっているため)
逆に上記の条件を満たさなければ、目的の木を構築することができる。放送解説の通りだが、以下がその一例の木である。
ポイント
- 必要条件で絞り込む
- 対になる条件を考える