🕌

[AtCoder]ABC289 repo

2023/02/11に公開約1,000字

https://atcoder.jp/contests/abc289

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

ログインするとコメントできます