AtCoder Beginner Contest 070
はい。
https://atcoder.jp/contests/abc070
A - Palindromic Number
Python3
n=input() print("Yes" if n[0]==n[2] else "No")
先頭と末尾が同じかを確認した。
B - Two Switches
Python3
a,b,c,d=map(int,input().split()) print(max(0,min(b,d)-max(a,c)))
動き始めの遅い方と、動き終わりの早い方の差を見る。差が負なら0にする。
C - Multiple Clocks
Python3
def gcd(a,b): return a if b==0 else gcd(b,a%b) def lcm(a,b): return a*b//gcd(a,b) n=int(input()) ans=1 for i in range(n): t=int(input()) ans=lcm(ans,t) print(ans)
先頭から最小公倍数を見てそれをそれ。
D - Transit Tree Path
Python3
from collections import deque n=int(input()) l=[0]*n d={} for i in range(n-1): a,b,c=map(int,input().split()) a-=1 b-=1 if a in d: d[a].add((b,c)) else: d[a]={(b,c)} if b in d: d[b].add((a,c)) else: d[b]={(a,c)} q,k=map(int,input().split()) k-=1 p=deque([k]) while len(p): w=p.popleft() for i in d[w]: if (l[i[0]]==0 and i[0]!=k) or (l[i[0]]!=0 and l[i[0]]>l[w]+i[1]): l[i[0]]=l[w]+i[1] p.append(i[0]) for i in range(q): x,y=map(int,input().split()) print(l[x-1]+l[y-1])
辺とコストを全部保存しておく。KがわかったらKをスタートにして他の全頂点と最小コストでの移動を調べる。調べ終わったら「xとK」と「yとK」の移動コストの和が解になるはず。