Dが解けずに198位でした
A: スワップ - AtCoder Beginner Contest #012 | AtCoder
2つの数値が与えられるので、順番を逆にして出力
# -*- coding: utf-8 -*- import math,string,itertools,fractions,heapq,collections,re,array,bisect def ls(): return raw_input().strip().split() def ln(): return map(int, raw_input().strip().split()) def ld(): return map(float, raw_input().strip().split()) a = ln() print a[1], a[0]
B: 入浴時間 - AtCoder Beginner Contest #012 | AtCoder
秒を時間と分に直す
# -*- coding: utf-8 -*- import math import sys import datetime n = int(raw_input().strip()) print '{:02d}:{:02d}:{:02d}'.format(n/3600, (n%3600)/60, n%60)
C: 九九足し算 - AtCoder Beginner Contest #012 | AtCoder
掛け算の九九の値の総和に足し忘れている可能性がある部分を昇順で答える
# -*- coding: utf-8 -*- import collections n = input() mem = collections.defaultdict(list) add = 0 for i in xrange(1, 10): for j in xrange(1, 10): mem[i * j].append((i, j)) add +=i * j mem[add - n].sort() for p, q in mem[add - n]: print '{} x {}'.format(p, q)
D: バスと避けられない運命 - AtCoder Beginner Contest #012 | AtCoder
グラフのある始点からの最大の最短距離が、最小になる始点の時の最大の最短距離を求める
ワーシャルフロイドとか各点からのダイクストラとかやれば解ける(ただしC++とかJavaとかの高速な言語に限る
以下のPythonのコードはダイクストラの始点として一部のノードだけをランダムに選んで実行する
運良く正解のノードが選ばれていれば正解する
# -*- coding: utf-8 -*- import heapq,collections,sys,random,math def ln(): return map(int, raw_input().strip().split()) N, M = ln() d = collections.defaultdict(dict) data = sys.stdin.readlines() for i in data: a, b, t = map(int, i.split()) d[a-1][b-1] = t d[b-1][a-1] = t z = [10000000] * N def dijkstra(s): dist = z[:] dist[s] = 0 heap = [] heapq.heappush(heap, (0, s)) while heap: dd, v = heapq.heappop(heap) dv = dist[v] if dv < dd: continue for i in d[v]: dvi = d[v][i] if dist[i] > dv + dvi: dist[i] = dv + dvi heapq.heappush(heap, (dist[i], i)) return max(dist) result = [] if N >= 260 and M >= 35000: x = random.sample(xrange(N), int(math.ceil(3*N/5))) else: x = xrange(N) for i in x: result.append(dijkstra(i)) print min(result)