マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

SRM353 DIV2

250点問題 EllipseCoverage

問題自体は簡単だったけど、楕円というだけで難しく考えすぎていた。「楕円の内側にある点の数を求めろ」って問題だったわけだけど、問題文に書いてある通りにプログラムを書けば楕円であることは気にする必要もなかった。Java(C/C++でもほとんど同じだが)だと以下のようにやればいいだけだった…。


for(int x = -200; x <= 200; x++){
for(int y = -200; y <= 200; y++){
(x, y)と(x1, y1)の直線距離を計算
(x, y)と(x2, y2)の直線距離を計算

2つの直線距離の合計がd未満なら(x, y)が楕円の
    内側の点とみなし、楕円の内側の点の数に1を足す
}
}

-200と200は範囲に含める必要はなさそうだけど気分的な問題で追加。英語の文章+楕円ってだけで難しく考えすぎで23分もかかり164.84ポイント。頭固すぎ…まぁ、平均186と若干点数が低いあたり、楕円に騙された人が多かったのかな?と思う。

500点問題 Glossary

単語をソートして指定されたフォーマット通りに出力しろという問題。単語は大文字と小文字を区別しないでソートする必要があるため、TreeMapのキーにtoUpperCaseした文字列、値に元の文字列を指定して追加した。指定されたフォーマットが意外にめんどくさくて時間がかかったが、AからMまでのArrayListとNからZまでのArrayListにわけて解決。27分で解いて303ポイント取得

1000点問題 PlatformJumper

解けなかった。問題を読んだとき一瞬マリオを想像した

結果

合計468.85ポイントでrateが954から1040へ上がった。次のSRMで1100を目標に…って前も同じ目標掲げて一気に転落したような…。ついでに日本人の中のランキングだと51 / 76。50位以内も目前か。世界ランキングだとちょうど半分あたりのようだ。