Skip to content

ABC-356

A

URLURL\:\to

解法


B

URLURL\:\to

解法


C

URLURL\:\to https://atcoder.jp/contests/abc356/tasks/abc356_c

#bit全探索

N,M,K = Integer().content
keys, results = [0]*M, [0]*M
# データの分別、整理
for i in range(M):
tmp = input().split()
for j in tmp[1:-1]:
keys[i] |= 1<<(int(j)-1)
results[i] = (1 if tmp[-1]=='o' else 0)
ans = 0
for i in range(2**N):
for j in range(M):
ok = bin(i&keys[j])[2:].count("1")
if ((ok<K and results[j]==1) or (K<=ok and results[j]==0)):
break
else: ans += 1
print(ans)

解法

NNの制約が小さいところと鍵が正解なのかダミーなのかという点からbit全探索が使えることがわかる。 正解とダミーの組み合わせをbitで表し、テストで使用した鍵をbitで洗わし、それぞれの論理和をとることで、1の数が使用した正解の鍵の数になる。すべてのテストで条件を満たしたらans++ans++とすると題意を満たすことができる。


D

URLURL\:\to

解法


E

URLURL\:\to

解法