🕌
[AtCoder]ABC289 repo
A - flip
s = input()
for i in range(len(s)):
print("0" if s[i] == "1" else "1", end="")
print("\n")
B - レ
複数の無向グラフを帰りがけ順で出力するだけ
n, m = list(map(int, input().split()))
a = list(map(int, input().split()))
nums = [i for i in range(1, n+1)]
while len(nums) != 0:
s = min(nums)
e = s
# 終点を設定
while e in a:
e += 1
while e >= s:
print(e, end=" ")
nums.remove(e)
e -= 1
C - Coverage
組み合わせ全列挙 -> 平坦化して重複削除 -> 1~nのすべてを含んでいればカウント
import itertools
n, m = list(map(int, input().split()))
d = []
for i in range(m):
c = int(input())
d.append(list(map(int, input().split())))
xl = [i for i in range(1, n+1)]
cnt = 0
for i in range(1, m+1):
for comb in itertools.combinations(d, i):
comb = itertools.chain.from_iterable(comb)
comb = list(set(comb))
if comb == xl:
cnt += 1
print(cnt)
全列挙はitertools.combinations(d, i)
、重複削除はcomb = list(set(comb))
でできる
おわりに
Cがライブラリゴリゴリ実装すぎて楽しかった
Discussion