解法
B問題
B - Setsubun
こちらも単純にkを超えるまで足し続けるだけです。計算量は事前に試して間に合いそうだったのでそのまま出しました。
n, k = map(int, input().split()) x = n i = 0 while x < k: i += 1 x += n + i print(i)
C問題
C - Chokutter Addiction
Aを最初から見ていきながら次の閲覧開始時間との大小関係を確認していけばいいです。
最後に、終業時間Tと最後の閲覧開始時間を比較します
n, t = map(int, input().split()) a = list(map(int, input().split())) ans = 0 nxt = 0 # 次の閲覧開始時間 for i in range(n): if a[i] >= nxt: ans += a[i] - nxt nxt = a[i] + 100 else: continue if len(a): if a[-1] != t and t >= nxt: ans += t - nxt else: ans += t print(ans)
D問題
D - Pawn Line
解説見ました。これ思いつくんでしょうか……
t = int(input()) for _ in range(t): n = int(input()) r = list(map(int, input().split())) rcopy = r.copy() for i in range(1, n): r[i] = min(r[i], r[i - 1] + 1) for i in range(n - 1)[::-1]: r[i] = min(r[i], r[i + 1] + 1) cnt = 0 for i in range(n): cnt += abs(r[i] - rcopy[i]) print(cnt)
おわりに
緑色は遠いです。。。
最近鉄則本なる本を買って勉強し始めました。
フルカラーで見やすいし、説明もすごくわかりやすいし、知らないアルゴリズムもたくさん網羅されていてなかなか読み応えあります。力がつく気がします。
リンク