ABC131(A, B, D)
AtCoder Beginner Contest 131をやりました。
結果はABDが通ってCがダメ。700点ですね。
言語はC#。
A-Security (AC, 4min)
よくわからなかったので、入力をToCharArray()しちゃました。
for文をLength-1まで回してi+1とiが同じならそこでBad出力してReturn。
問題文が一瞬?となって4分。
B-Bite Eating (AC, 14min)
とどのつまり、味の絶対値が一番低い物を食ってしまえば良いということになると思いました。for文を回して、味の絶対値が低い物の味の値を記録して合計から引いて出力。
途中まで味の値も配列かなんかで来ると思ってたのもあって書きなおして10分、合計14分。
D-Megalomania (AC, 50min)
実は途中までCやってたんだけど、さっと書いたコードが入力例ですら通らなくてキツいとなったのでD問題に逃走しました。なのでDで何分かかったかは分かりません。
どう考えても納期が近い奴から順にやっていけばいい話でした。何を思ったのか、ICompareble<T>を持ったクラスを作ってListに投入してSortぽちっとで済ませました。
完了時点で50分、Eを覗いた感じやばそうだったので、Cに戻りました。
C-Anti-Division (WA)
根本的に考え方が間違ってたシリーズ。
範囲内に含まれる割り切れる数は端っこからいきなり割り切れるとかの事例を除き(範囲/n)のはずで、足すと最小公倍数が2重カウントされるからそれ引けば行けそうだなーとか思ってました。全然ダメでしたね。というかこの考え方自体、解説サイトで見た枝狩りチックな思考法でよくありませんでした。
解説を覗き見したんですが、なるほどMax以下の塊からMin以下を引けばいいんですね。範囲を外側にとってしまうという発想はありませんでした。次からは頑張りましょう。
ベン図、ベン図。なるほど。
というわけで今回は
・困ったらクラスを書いてしまう思想の是非
・範囲を外に広げて(0まで広げる的な)考えやすくする
・ベン図とかそいういう考え方
あたりでしょうか。