354.1

やるだけセット...。

300

A月B日またはA日B月のいずれかの意味でA/Bという文字列がいくつか与えられる。狭義昇順にソートされているが、どちらの意味かは分からない。A月B日表記に統一した上で、辞書順で最初のものを答えよ、という問題。


日付として前の方のものとして解釈して、ダメならもう一方試し、次に進んでいくだけ。日付のチェックに閏年として判定せよ、と書いてあるだけなのがなんとも...。

500

整数Nが与えられるので、二つの桁を選んで交換するが、その際にどちらの値も1ずつ減算する。この操作を好きな回数行って、得られる最大値を答えよ、という問題。


メモ付き探索するだけ。明らかに大きくならないと分かったら枝をかる、とかやれば高速になるけれど、それすら不要。ただし上記の操作を比較的高速にやらないとダメ。

900

N*Mのチェス盤にルークをK個置くことを考える。二つ以上のルークから攻撃される位置にいるようなルークがいない配置は何通り可能か答えよ、という問題。


ある行について、高々2個しか置けない。2個置く場合は、まだルークが置かれていない列に置かないといけない。1個置く場合は、既に攻撃されているルークがいない列に置かないといけない。これを整理すると、ルークが置かれていない列の数、ルークを置いたことのある列の数、今までに置いたルークの数、今処理している行、を状態にDPすれば良いことが分かる。(一行に2個まとめて置いた場場合、その列は使用済みなので状態として考慮する必要はない。)