abc 080 c (python)
i = 1 ~ 2**10-1 まで bit 全探索する問題。
与えられた F を 2 進数としてみると、i & F =1となっている桁の個数でどの P になるかが決まる。
'10' をそのまま 2 進数として扱いたいときは int( '10', 2 ) としてやる。
( print すると 10 進数表記の 2 が出力される)
最近意識せずに bit 計算の問題ばかり解いている気がする。
import sys input = sys.stdin.readline n = int(input()) chk = [] for _ in range(n): f = input().split() chk.append(int(''.join(f),2)) p = [] for _ in range(n): P = [int(i) for i in input().split()] p.append(P) import collections ans = -float('inf') for i in range(1,2**10): que = 0 for j,cj in enumerate(chk): d = format(i & cj,'b') c = collections.Counter(d) que += p[j][c['1']] ans = max(ans,que) print(ans)