用户输出
1
系统信息
Exited with return code 0
编号 | 题目 | 状态 | 分数 | 总时间 | 内存 | 代码 / 答案文件 | 提交者 | 提交时间 |
---|---|---|---|---|---|---|---|---|
#63759 | #1086. jwp的幸运集合 | Accepted | 100 | 1813 ms | 40608 K | Python 3 / 1.6 K | 强基(数学)001 吴沂钊 | 2021-10-11 2:36:30 |
n = int(input())
A = list(map(int, input().split()))
A2 = A[len(A) // 2:]
del A[len(A) // 2:]
odd = []
even = []
ans = -1
def search(li, k):
if not li:
return [0, 0]
else:
l, r = 0, len(li)
if li[l][0] > k:
return [0, 0]
else:
while r - l > 1:
mid = (l + r) // 2
if li[mid][0] > k:
r = mid
elif li[mid][0] < k:
l = mid
else:
return [mid, 1]
if li[l][0] < k:
return [r, 0]
else:
return [l, 1]
for i in range(2 ** len(A2)):
b = bin(i)[2:]
count = 0
s = 0
for j in range(len(b)):
if b[-1-j] == '1':
count += 1
s += A2[j]
if count % 2 == 1:
chi = search(odd, s)
if chi[1] == 1:
odd[chi[0]][1] += 1
else:
odd.insert(chi[0], [s, 1])
else:
chi = search(even, s)
if chi[1] == 1:
even[chi[0]][1] += 1
else:
even.insert(chi[0], [s, 1])
for i in range(2 ** len(A)):
b = bin(i)[2:]
count = 0
s = 0
for j in range(len(b)):
if b[-1 - j] == '1':
count += 1
s += A[j]
if count % 2 == 1:
chi = search(odd, -s)
if chi[1] == 1:
ans += odd[chi[0]][1]
else:
chi = search(even, -s)
if chi[1] == 1:
ans += even[chi[0]][1]
print(ans)
31
749 349 69 -880 282 -926 -831 225 988 552 -193 634 369 476 204 487 387 -803 -370 -975 -17 -485 3
<40 bytes omitted>
用户输出
260459
系统信息
Exited with return code 0
31
362 -14 -181 -465 -400 -232 26 963 70 728 -728 -222 -510 854 139 386 555 994 103 279 213 76 953
<36 bytes omitted>
用户输出
81861
系统信息
Exited with return code 0
用户输出
16383
系统信息
Exited with return code 0