380.1

負け犬...。500が通らない...。

250

チェスのナイトが右向きの4方向にしか進めない状況で、ある大きさの盤面の左下に置いてあるとき、移動できる最大の回数を答えよという問題。ただし移動回数が4回以上の時には4通りすべての移動を少なくとも一度は使わないといけない。


取り敢えず上下に移動するようにすれば縦の大きさは余り気にならないので、縦が2の時とそれより大きいときに分けて、横幅を考慮しつつ答える。コーナーケースに注意しましょうという問題。

500

複数種類のカードが特定の枚数ずつ与えられて、そのうちの高々どれか一つをワイルドカードに置き換えることが許可されているときに1枚ずつ除去する。全部で何回除去できるかという問題。


除去する回数をNとしてバイナリサーチ。バイナリサーチの範囲が各カードの枚数+ワイルドカードの枚数になることに注意が必要です。除去する枚数がN枚のとき、各カードの不足枚数をワイルドカードで補わないといけないけれど、ワイルドカードはNまたはワイルドカードの総数までしか使えないので、それを元に条件判断すればおしまい。

1000

ひし形の中にひし形を配置する。縦長のひし形と横長のひし形があって、それぞれが交互に出現する。ひし形の辺の長さが与えられて、一番外側には横長のひし形を配置するとき、そのひし形の高さを最小にせよ、という問題。


一番内側のひし形から順番に配置。縦長か横長かで、可能な高さまたは幅の範囲を計算していって、それらが違反しなければ最小の高さを返しておしまい。longで計算すれば精度は足りそう。