394.1

負け犬の遠吠えをする気力すらない負けっぷり。...といいつつ負け惜しみ。

250

ある文字列から、N文字まで除去して良い状況で、同じ文字の出現回数の最大値と最小値との差を最小にせよ、という問題。


一番小さいのをなくすか、一番大きいのを減らすか、という操作で探索すれば良さそう。探索するのは効率が悪いので、小さい方からいくつなくすかを全通り試して、上を削れるだけ削る、という処理をやってみた。で、削り切る必要はないのを忘れていて再サブミット。(気付いただけマシともいう。)

出題者の想定解は多分、最大値と最小値のペアを全探索して、一番差の小さいものを返す、というルーチンだと思う。こっちを思い付かない時点でもう年だなぁ...。

600

直線がN本与えられる時、点対称の中心はいくつあるか答えよ、という問題。


平行な直線をまずグループ化する。それぞれのグループについて、自分と重なるか、重ならない場合等間隔にもう一本直線が存在する直線を1本決める。決まらない場合は点対称の中心は存在しない。決まる場合は必ず一意に決まる。(右側と左側から一本ずつ選らんでペアにして、中心を求める。次の一本ずつの中心を求める。前の中心と一致するなら次を同じように調べる。一致しなければダメ、という感じにやる。)


後はこうしてできた各グループの中心の直線について吟味する。1本ならその直線上の全ての点が点対称の中心になり、2本ならその交点である。3本以上の時については、交点が1点で重なるならばそこが点対称の中心で、そうでなければ点対称の中心は存在しない。


直線の平行判定と、平行な二本の直線の中心と、直線の交点座標の計算、ということが必要。交点の計算をちゃんとしたライブラリに持っていれば、通ったかも知れないなぁ。whileループの終了判定が間違っていたのもあるのでなんとも。それについては、ちゃんとfor文で書けば良かったケース。

900

時間内には開けなかった。チラッと読んだけれど意味不明なので割愛。