実は初参加.
3問目まで解けて62位でした
A: 宝くじ - AtCoder Regular Contest #006 | AtCoder
宝くじが何等になっているか計算.
そのまま書くだけ.
途中まで数字の重複を許すものだと読み間違えていた><
# -*- coding: utf-8 -*- correct = set(map(int, raw_input().split())) bonus = int(raw_input()) given = set(map(int, raw_input().split())) if len(correct & given) == 6: print 1 elif len(correct & given) == 5 and bonus in given: print 2 elif len(correct & given) == 5: print 3 elif len(correct & given) == 4: print 4 elif len(correct & given) == 3: print 5 else: print 0
B: あみだくじ - AtCoder Regular Contest #006 | AtCoder
あみだくじ.
ゴールから逆算すれば楽.
rootとrouteをうち間違えている……orz
# -*- coding: utf-8 -*- import math N, L = map(int, raw_input().split()) root = [] for i in xrange(L): line = raw_input() cross = set() for j in xrange(len(line)): if line[j] == '-': cross.add(j) root.append(cross) line = raw_input() start = 0 for i in xrange(len(line)): if line[i] == 'o': start = i break root.reverse() #print start, root for i in root: # print start, i if start + 1 in i: start += 2 elif start - 1 in i: start -= 2 print int(math.floor(start / 2.0) + 1)
C: 積み重ね - AtCoder Regular Contest #006 | AtCoder
貪欲にやってうまくいくかな?と適当にやったら大丈夫だった
# -*- coding: utf-8 -*- import math N = int(raw_input()) w = int(raw_input()) stack = [[w]] for i in xrange(N - 1): w = int(raw_input()) for j in stack: if j[-1] >= w: j.append(w) break else: stack.append([w]) stack.sort(lambda x, y: cmp(x[-1], y[-1])) # print stack print len(stack)
D: アルファベット探し - AtCoder Regular Contest #006 | AtCoder
二次元の文字列マッチング.
ダメだった.
繋がってる点の個数を数えたり,高速な文字列マッチのアルゴリズムとかをやればよかったのかな?