1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ABC373振り返り

Last updated at Posted at 2024-09-28

前回の振り返り

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

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

A

条件にマッチしたら加算

ソースコード

main.py
import sys
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)

def main():
    ans = 0
    for i in range(12):
        S = rS()
    
        if len(S) == i+1:
            ans += 1 
    print(ans)
    
if __name__ == '__main__':
    main()

B

各文字の位置を連想配列に入れて
B以降の1文字前との距離を全部足す

ソースコード

main.py
import sys
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)



def main():
    S = rS()
    d = {s:i  for i,s in enumerate(S)}
    cur = d["A"]
    ans = 0
    for s in 'BCDEFGHIJKLMNOPQRSTUVWXYZ':
        ans += abs(d[s] - cur)
        cur = d[s]
    print(ans)
    
if __name__ == '__main__':
    main()

C

Aの中での最大値とBの中での最大値をそれぞれ足すだけ

ソースコード

main.py
import sys
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)

def main():
    N = rI()
    A = rLI()
    B = rLI()
    
    ans = max(A) + max(B)
    print(ans)
    
if __name__ == '__main__':
    main()

D

グラフの問題はできません定期
連立方程式組む感じ…?
(追記)深さor幅優先探索すればいいだけなのね…

E

求めたい値がよくわからなかった

F

ナップサック問題って動的計画法の定番だけど
目的関数が非線形でどうしよって感じ

G

線の交差判定は三角形つくって行列式立てて云々みたいな記憶しかない

まとめ

D問題以降は解ける気がしなくて放置してしまった
F問題は明らかに動的計画法してくださいな問題だったけど諦めてしまった

このあたりのモチベーション管理も課題ですね

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?