ABC409振り返り


前回の振り返り

https://qiita.com/comet725/items/bfcac9f2524036546b1c

今日はABC409開催日だったので参加結果を振り返る


https://atcoder.jp/contests/abc409

今週はA,B,Cの完(1ペナ)


# A

zipで同時に調べるだけ

## ソースコード

```python:main.py
import sys
from collections import defaultdict, Counter
from itertools import product

def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
def err(*args): print(*args, file=sys.stderr)

d = defaultdict(lambda: 0)
c = Counter()

def main():
    N = rI()
    T = rS()
    A = rS()
    ans = any(t=="o" and a=="o" for t,a in zip(T,A))
    print('Yes' if ans else 'No')
    
if __name__ == '__main__':
    main()
```

# B

適当にimosしたけどこれで良かったのかね？

## ソースコード

```python:main.py
from bisect import bisect_left, bisect_right, insort_left, insort_right
from collections import defaultdict, Counter, deque
from functools import reduce, lru_cache
from itertools import product, accumulate, groupby, combinations
import sys
import os
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
IS_LOCAL = int(os.getenv("ATCODER", "0"))==0
err = (lambda *args, **kwargs: print(*args, **kwargs, file=sys.stderr)) if IS_LOCAL else (lambda *args, **kwargs: None)

def main():
    N = rI()
    A = rLI()
    L = [0]*102
    L[0] = N
    for a in A:
        L[min(a+1,101)]-=1
    S = list(accumulate(L))
    print(max(i for i,s in enumerate(S) if s >= i))
    
if __name__ == '__main__':
    main()

```

# C

Lが3の倍数じゃなかったら正三角形にならないと決め打って0

で離れている点を円周上のどこなのかを剰余でだして頂点数を出す。

あとはL/3飛ばしで掛け算するだけ。

いつも大好きCounter君使わずにlistのcount使ったらTLE…

## ソースコード

```python:main.py
from bisect import bisect_left, bisect_right, insort_left, insort_right
from collections import defaultdict, Counter, deque
from functools import reduce, lru_cache
from itertools import product, accumulate, groupby, combinations
import sys
import os
def rI(): return int(sys.stdin.readline().rstrip())
def rLI(): return list(map(int,sys.stdin.readline().rstrip().split()))
def rI1(): return (int(sys.stdin.readline().rstrip())-1)
def rLI1(): return list(map(lambda a:int(a)-1,sys.stdin.readline().rstrip().split()))
def rS(): return sys.stdin.readline().rstrip()
def rLS(): return list(sys.stdin.readline().rstrip().split())
IS_LOCAL = int(os.getenv("ATCODER", "0"))==0
err = (lambda *args, **kwargs: print(*args, **kwargs, file=sys.stderr)) if IS_LOCAL else (lambda *args, **kwargs: None)

def main():
    N, L = rLI()
    D = rLI()
    
    if L % 3 != 0 :
        print(0)
        return
    
    P = Counter([0]+list(accumulate(D,lambda a,b:(a+b)%L)))
    # err(P)
    
    M = L // 3
    
    ans = 0
    for i in range(M):
        # v = P.count(i)*P.count(i+M)*P.count(i+M*2) そりゃ遅いって…
        v = P[i]*P[i+M]*P[i+M*2]
        # err(v)
        ans += v

    print(ans)
    
if __name__ == '__main__':
    main()

```

# D

巡回シフト食わず嫌いで逃走

# E

木構造からの最短経路系の問題だと察して逃走

# F

座標系の問題アレルギーで逃走

# G

剰余の期待値だけどG問題なので逃走

# 感想

相変わらずD以降を逃走してしまう体たらく…