5完2WA。Eがスパッと解けたのがとても気持ちよかったです。しかし、あいかわらず幾何で爆死・・・。
各問題
A - Next Alphabet
言語にもよるかもしれませんけど、C + 1
を文字型として出力すればOKですね。zが入力に与えられないのが良心的です。
B - Achieve the Goal
考えるのが面倒だったので、Aを全部足した後、0からKまでループで回して、平均値がMになった瞬間の得点を出力、としました。
Submission #9445488 - AtCoder Beginner Contest 151
もちろんループを回さずとも答えは簡単な計算で出るのですが、この問題に限っていえばO(KM)でも計算量にまったく問題がないので、計算で求めるほうが条件分岐が増えて微妙にバグらせやすい、かも?(答えが負になったときとKを超えた時の両方を考慮する必要があるので)
C - Welcome to AtCoder
まず、各問題についてACが出たかどうかと、WAがいくつ出たかを保存する配列を用意します。
最初の提出から順に、ACが出たかどうかを確認しつつ、まだACが出ていない問題についてWAが出ればその回数を加算していきます。
次に、ACが何問で出たかを数えます。
最後に「ACが出ている問題に対して」WAがいくつ出たかを数えます。
私は「ACが出ている問題に対して」をすっとばしてWAを集計してしまい、WAを一つ出してしまいました。ああ・・・。
D - Maze Master
スタート地点を全探索 -> 全探索(BFS)でスタート地点からの距離を計測 -> 距離の最大値が答え
私は最初これに気づかず、ゴール地点も全探索してTLEをもらってしまいました。20^6
なら大丈夫だと思ったんです・・・。
(追記)
やっぱり20^6
なら実装によっては間に合うらしいです。自分のBFSの書き方がまずいのだろうか・・・。
E - Max-Min Sums
これは、各数字が何回min (or max)として使用されるかを数えればいいです。
まずAの列をソートし、小さい方から考えます。
A1がminとして使用される回数は、A2からANまでのN-1個からK-1個を選ぶ回数です。
A2がminとして使用される回数は、A3からANまでのN-2個からK-1個を選ぶ回数です。
一般化して、Amがminとして使用される回数は、Am - 1からANまでのN-m個からK-1個を選ぶ回数です。
maxについても同様に、大きい方から見ていけばよいです。
あとは求めた回数とAを掛けて、集計して、maxの合計からminの合計を引けば答えです。
F - Enclose All
二分法を使えばいいのはすぐにわかって、あとは幾何問題なのですが、その幾何問題が解けず。on_
二点間の距離が「求めたい半径*2」以下になるか、で判定しようとしたんですけど、間違ってますかそうですか・・・。
まとめ
幾何があれなのは今のところ仕方ないので、まあ今日は実力通りの結果でした。いや、今日のEがすぐに見えたのは実力以上かも。
あとは不要なWAを減らしていければ・・・。
ともあれ、2日連続のHighest更新となりました。