結果
問題 | No.2672 Subset Xor Sum |
ユーザー |
|
提出日時 | 2024-03-15 23:16:10 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,138 ms / 2,000 ms |
コード長 | 874 bytes |
コンパイル時間 | 155 ms |
コンパイル使用メモリ | 82,048 KB |
実行使用メモリ | 180,096 KB |
最終ジャッジ日時 | 2024-09-30 04:26:33 |
合計ジャッジ時間 | 30,541 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 66 |
ソースコード
import sys input = sys.stdin.readline N = int(input()) A = list(map(int, input().split())) D = [0 for _ in range(5001)] X = 0 for a in A: D[a] += 1 X ^= a #print(D) dp = [set() for _ in range(3)] dp[0].add(0) for i in range(5001): if D[i]==0: continue ndp = [set()|dp[j] for j in range(3)] # 0 if D[i]>=3: ndp[2].add(0) ndp[2].add(i) if D[i]%2==0: ndp[1].add(0) else: ndp[1].add(i) if D[i]==2: ndp[2].add(i) ndp[1].add(0) else: ndp[1].add(i) # 1 for s in dp[1]: if D[i]>=2: ndp[2].add(s^i) ndp[2].add(s) else: ndp[1].add(s^i) ndp[2].add(s) # 2 for s in dp[2]: ndp[2].add(s^i) dp = ndp #print(dp) if 0 in dp[2] and X==0: print("Yes") else: print("No")