hirohirohirohirosのブログ

地方国立大学に通う情報系学部4年

Atcoder ABC236 振り返り

 バーチャルで参加しました.

A - chukodai【AC】

 文字列をlist関数に入れると一文字ずつ要素になったリストが返ってきます.また,a,b = b,aとすると簡単に値を入れ替えることができます. 

S = list(input())
a, b = map(int, input().split())

S[a-1], S[b-1] = S[b-1], S[a-1]
print("".join(S))
B - Who is missing?【AC】

 ソートする事で同じ値は連続して並ぶようになります.それが3個しかなかったらそれを出力します.

N = int(input())
A = [int(i) for i in input().split()] 
A = sorted(A)

i = 0
ok = True
for n in range(1, N+1):
    num = 0
    while True:
        if i < len(A) and A[i] == n:
            num += 1
        else:
            if num == 3:
                ok = False
                break
            break
        i += 1

    if not ok:
        break
print(n)
C - Route Map【AC】

 止まる駅があった時のみjを+1するようにすれば良いです.

N, M = map(int, input().split())
S = [i for i in input().split()] 
T = [i for i in input().split()] 

j = 0
ans = []
for i in range(N):
    if S[i] == T[j]:
        j += 1
        ans.append("Yes")
    else:
        ans.append("No")

for i in ans:
    print(i)
D - Dance【解説AC】

 Nが8しかないことから全探索でいけそうだということは感じていたがそれ以上は分からなかった.全探索にしろどう実装すれば良いのか分からなかったが,他人のコードを見ることによってDFSで実装出来ると言うことを知った.DFSは苦手意識があり無意識的に考慮の外に追いやっているため,積極的に意識する.

N= int(input())
A = []
for i in range(2*N-1):
    A.append([int(i) for i in input().split()])

ans = []
def dfs(member, fun):
    if member == []:
        ans.append(fun)
    else:
        p1 = member.pop(0)
        for i in range(len(member)):
            p2 = member[i]
            dfs(member[:i] + member[i+1:], fun^A[p1][p2-p1-1])
dfs(list(range(2*N)),0)
print(max(ans))