ABC407振り返り


前回の振り返り

https://qiita.com/comet725/items/3bb9e80e14d2f6915ba1


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


https://atcoder.jp/contests/abc407

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


# A

A/B付近の整数を出して誤差順にソートしたけど
多分冗長的だった

## ソースコード

```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():
    A, B = rLI()
    t = A/B
    X = int(t)
    Y = [X+i for i in range(-1,2)]
    
    Y.sort(key=lambda x: abs(x-t))
    

    ans = Y[0]
    print(ans)
    
if __name__ == '__main__':
    main()

```

# B

6×6なら全探索でいいですね。

## ソースコード

```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():
    X, Y = rLI()
    
    dices = [(i,j) for i,j in product(range(1,6+1),repeat=2)]
    
    M = len(dices)
    P = 0
    for i,j in dices:
        if i+j >= X or abs(i-j) >= Y:
            P += 1
    ans = P/M
    print(ans)
    
if __name__ == '__main__':
    main()

```

# C

ボタンBの押す回数を気をつけながら
後ろの数からカウントする。

## ソースコード

```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():
    S = rS()
    T = [int(s) for s in S]
    # err(len(S))
    # err(sum(T))
    # U = list(accumulate(reversed(T),func=lambda a,b: a+b+1))
    # err(list(reversed(T)))
    # err(U)
    b = c = d = 0
    for t in reversed(T):
        e = (100+t-d)%10
        c += e+1
        # err(t,d,e,c)
        d += e
        d %= 10
        
    print(c)
    
if __name__ == '__main__':
    main()

```

# D

求めたいスコアの概念がむずすぎ撃沈

多分bitごとに足し引きするんだけど最大化ですか…

最大20マスみたいだし全探索しても良かったな…

# E

求めたいスコアの概念がむずすぎ撃沈part2

# F

セグ木使いそう

# G

求めたいスコアの概念がDより簡単なのになんでG問題なの？

よく見たら成約数がDの100倍だった…

# 感想

150点問題とはいえAでヘンテコな計算してしまった。
秒でできるような実装力がほしい。