「1種類」、つまり全ての要素が同じ数列である。個並んだ数列」によって常に実現することができる。ついて、2人のプレイヤーがゲームをする。「同じ文字からなる長さ2の連続部分列」を1つ消す。その後ターンは相手に移る。最終的に、自分のターンで連続部分列を消せなくなった方が負けとなる。2人のプレイヤーが最適に行動したとき、先手と後手のどちらが勝つか求めよ。解説まず、このゲームの勝敗は2人の手順(どの順番に連続部分列を消したか)に依存しない。よって貪欲に前から連続部分列を消していき、消した回数の偶奇を調べればよい。かかってしまい、制約的にとても厳しい1。そこでこれをstackを利用することで高速化する。stackによるシミュレート方法は以下の通り。今見ている要素とstackの末尾を比較する。同じだったら、stackの末尾を削除する。違かったら、stackの末尾にその文字を挿入する。ちなみにこれは「括弧マッチング」のアルゴリズムを複数種類の文字に拡張したものとも言える。以下ではstd::stringをstackとして使っている。std::stringの中身は概ねstd::vectorと同じなのでこのような使い方ができる。タイルを配置していく。タイルは回転させたり重ねて置くことはできない。全てのマスがタイルで埋まっている行/列がある場合、その行/列上にあるタイルは埋まった瞬間に全て消える。して与えられるので、それらのタイルの置き方を1つ出力せよ。様々な解法が考えられる問題だが、私の解法は以下の通り。)は3行目にだけ置くことにする。どちらも左端から順に置いていく。縦タイルは4枚、横タイルは2枚揃うとタイルが消えるので、そしたら再び左端から置き始めればよい。