ABC185の感想.Python
お昼にあったJOIで散々な結果だったのでABCでリベンジしたかったが...
A - ABC Preparation
listで受けとって,min
from sys import stdin input = stdin.readline l = list(map(int, input().strip().split())) print(min(l))
B - Smartphone Addiction
バグらせた.nと残充電量は別で持ちましょう.
from sys import stdin input = stdin.readline n, m, t = map(int, input().strip().split()) ab = [list(map(int, input().strip().split())) for _ in range(m)] battery = n battery -= ab[0][0] if battery <= 0: print('No') quit() battery = min(n, battery + ab[0][1] - ab[0][0]) for i in range(1, m): time = ab[i][0] - ab[i-1][1] charge = ab[i][1] - ab[i][0] battery -= time if battery <= 0: print('No') quit() else: battery = min(n, battery + charge) if battery - (t - ab[-1][1]) <= 0: print('No') else: print('Yes')
C - Duodecim Ferra
DPでいけると思ったけど,遷移式が立てれず...
D - Stamp
青色のマスを赤色にすることはできない.よって,隣接する青色のスタンプ同士の距離の最小値がになるので,数える.そのときに,間にある白のマスの数を数えて,区間ごとにで割って足す.
from sys import stdin input = stdin.readline inf = float('inf') n, m = map(int, input().strip().split()) a = list(map(int, input().strip().split())) if m == 0: print(1) quit() a.sort() if a[0] == 1: k = inf white = [] else: k = a[0] - 1 white = [a[0] - 1] for i in range(1, m): tmp = a[i] - a[i - 1] - 1 white.append(tmp) if tmp != 0: k = min(tmp, k) if a[-1] != n: white.append(n - a[-1]) ans = 0 length = len(white) for i in range(length): if white[i] % k == 0: ans += white[i] // k else: ans += (white[i] // k) + 1 print(int(ans))
感想
Fはxorを知っていれば解けそう?