AtCoder Regular Contest 157 A問題 XXYYX
問題
提出解答
問題の概要
からなる長さ の文字列 のうち, 以下を満たすものは存在するか?
- のなかで つの文字が隣り合う 箇所のうち
- がちょうど 箇所
- がちょうど 箇所
- がちょうど 箇所
- がちょうど 箇所
制約
解法
次のような問題に帰着させる.
以下は同値である.
- 条件を満たす文字列が存在する.
- 以下で定義される有向グラフ 上にオイラー路が存在する.
- が 本, が 本, が 本, が 本
各孤の始点と終点に対応する頂点が隣り合う つの文字に対応する.
ここで, 有向グラフ において, オイラー路が存在するための必要条件は
- 全ての頂点の相対次数が である.
- ある 頂点の相対次数が , 別の頂点の相対次数が , 残りの全ての頂点の相対次数が である.
ことのどちらか一方が成立することである. なお, ここで, 相対次数とは, 出次数 入次数して定義される.
各場合について考える. ここで, いま, には 頂点しかないので, 条件を満たす文字列が存在するための必要条件は である.
の値で場合分けする.
のとき, 上から順に以下のように経由すれば, オイラー路が存在する.
- を 回
- を 回
- を セット
のときも の場合と同様に存在する.
のとき
(ア) のとき, 上から順に以下のように経由すれば, オイラー路が存在する.
- を 回
- を 回
- を セット
(イ) のとき, でもあるから, 別の頂点に移動できない. よって, または でなくてはならない. 逆に, または の場合は存在する.
以上から,
かどうかを判定すれば良い.