ABC-371
A
https://atcoder.jp/contests/abc371/tasks/abc371_a
#だるい
def solve(): s = String().content if set(s) in [{'<'}, {'>'}]: print('B') elif s[0:1+1] in [('<', '>'), ('>', '<')]: print('A') else: print('C')
解法
がすべて ’<’ か ’>’ -> B 順序関係は必ず満たされると保証されているので が (’<’, ’>’) か (’>’, ’<’) -> A それ以外 C
を出力すればいい。
B
https://atcoder.jp/contests/abc371/tasks/abc371_b
#愚直
def solve(): n,m = Integer().content s = set(range(1, n+1)) for _ in range(m): num, sex = String().content num = int(num) if sex=='M' and num in s: s-={num} print("Yes") else: print("No")
解法
長男が生まれてない家を set で管理。条件に条件が真なら remove して “Yes”, 偽なら “No”
C
解法
D
https://atcoder.jp/contests/abc371/tasks/abc371_d
#二分探索 #累積和
n = Integer().contentx = IntegerList()p = IntegerList().prefixSum1D()
for _ in range(Integer().content): l,r = Integer().content xl,xr = x.upperBound(l-1), x.upperBound(r) print(p[xr]-p[xl])
解法
に累積和を適応させ、クエリごとに と に対応する位置を を UpperBound
することで求めだし、 を出力する。
E