316.1

実装ゲーセット。

250

N文字をL文字以上H文字以下のK文字ずつに分割して、以下の値の合計値を最小化せよ、という問題。グループの数。各グループに特定の文字が出てくる回数、または特定の文字以外のものが出てくる回数。


やるだけ。最後のグループだけ大きさが違い得るので、注意する。

550

長さが整数のスティックがN本与えられるので、長さLの領域を埋める。はみ出しても、他のスティックと重ねてもいけない。このとき使っていないスティックが置ける場所がなくなるような配置には最低何本必要か答えよ、という問題。


K本使うとき、K+1か所の隙間がある。この隙間の長さがAに限りなく近いけれどAよりも小さい値だとすると、A以下の長さのスティックを全部使った上で、(合計値)<=Lかつ(K+1)*A+(合計値)>=Lにできれば良い。可能な合計値と本数はDPで計算可能なので試すだけ。

900

文字列が与えられるので、条件Aを満たし、かつ条件Bを満たさない部分文字列のうち、開始位置が先頭のものの位置を答えよ、という問題。


条件を満たすかどうかの判定がN^3で、適当なアルゴリズムで一つ落とすだけっぽい。実装するだけっぽいので保留...。