唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

AtCoder Regular Contest #006に参加しました

実は初参加.
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

二次元の文字列マッチング.
ダメだった.
繋がってる点の個数を数えたり,高速な文字列マッチのアルゴリズムとかをやればよかったのかな?