結果
| 問題 |
No.1560 majority x majority
|
| コンテスト | |
| ユーザー |
vwxyz
|
| 提出日時 | 2024-06-02 07:02:19 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 973 bytes |
| コンパイル時間 | 710 ms |
| コンパイル使用メモリ | 82,304 KB |
| 実行使用メモリ | 78,848 KB |
| 最終ジャッジ日時 | 2024-12-23 01:33:21 |
| 合計ジャッジ時間 | 4,787 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 5 |
| other | AC * 10 WA * 16 |
ソースコード
def Pop_Count(N):
r=(N&0x5555555555555555)+((N>>1)&0x5555555555555555)
r=(r&0x3333333333333333)+((r>>2)&0x3333333333333333)
r=(r&0x0f0f0f0f0f0f0f0f)+((r>>4)&0x0f0f0f0f0f0f0f0f)
r=(r&0x00ff00ff00ff00ff)+((r>>8)&0x00ff00ff00ff00ff)
r=(r&0x0000ffff0000ffff)+((r>>16)&0x0000ffff0000ffff)
r=(r&0x00000000ffffffff)+((r>>32)&0x00000000ffffffff)
return r
N,M=map(int,input().split())
S=[0]*M
for n in range(N):
s=list(map(int,input().split()))
for m in range(M):
S[m]|=s[m]<<n
dp_cnt=[0]*(1<<M)
dp_cnt[0]=1
dp_bit=[None]*(1<<M)
dp_bit[0]=(1<<N)-1
dp_pop=[None]*(1<<M)
dp_pop[0]=N
for bit in range(1<<M):
for m in range(M):
if bit&1<<m:
dp_bit[bit]=dp_bit[bit^1<<m]&S[m]
dp_pop[bit]=Pop_Count(dp_bit[bit])
break
for bit in range(1<<M):
for m in range(M):
if bit&1<<m and dp_pop[bit]*2>=dp_pop[bit^1<<m]:
dp_cnt[bit]+=dp_cnt[bit^1<<m]
ans=dp_cnt[(1<<M)-1]
print(ans)
vwxyz