水面下の夢

競プロやイラストに興味があります.メインブログがここ.ソシャゲの話はこっち(http://ameblo.jp/0n0-yumechi/).ブログアイコンはYaQ(@8_9_00)さんから.

ABC034に参加しました

ブログを書く時間がない。
今更5/7のABCについて書いてどうするの(全然時間が足らず)




3完271位でした。最近コンテスト中に解けなかった問題を復習していないのでこのままだと永遠に伸びない/(^o^)\

A問題

A: 饅頭 - AtCoder Beginner Contest 037 | AtCoder


わざわざワンライナー。終わってからawkのint関数を使えば簡単にできたことに気がつく。弱い。1つ目、2つ目の数のうち小さいもので3つ目の数字を割り算する。(答えは整数)

print((lambda a: a[2]//min(a[0], a[1]))([int(i) for i in input().split()]))

B問題

B: 編集 - AtCoder Beginner Contest 037 | AtCoder

制約を見て愚直シュミレーションで間に合いそうだと予測し、実装。制約を見て冷静に解けたのは良かったかも。なんか気分でRuby書いた。特に理由なし。

n, q = gets.split(" ").map(&:to_i)
res = Array.new(n, 0)
q.times do
    l, r, t = gets.split(" ").map(&:to_i)
    for i in l-1...r do 
        res[i] = t
    end
end
 
puts res.join("\n")

C問題

C: 総和 - AtCoder Beginner Contest 037 | AtCoder

愚直にやるとTLEする。しゃくとりみたいにして毎回範囲内の操作を計算するのではなく、出るものと入るものだけを見て足しあわせていく。多分範囲を上手く見てやるともう少し上手くやれるのかもしれない。(何回足しあわされるか見れば良い?)

n, k = map(int, input().split())
al = [int(i) for i in input().split()]
t = sum(al[:k])
res = t
for i in range(1, n-k+1):
    t -= al[i-1]
    t += al[i+k-1]
    res += t
print(res)

D問題

DPっぽかった(LL系で行ける気がしないので思考停止してやめた)


反省:ABCはやるなら全完したいですね。