4.11美团笔试第一题思路
import sys
lines = sys.stdin.readlines()
N = int(lines[0])
for i in range(N):
n,x = map(int,lines[2*i+1].split())
nums = list(map(int,lines[2*i+2].split()))
box_num = n//2
box = []
for j in range(box_num):
a = nums[2*j] % 2
b = nums[2*j+1] % 2
if a == b:
box.append(a)
else:
box.append(2)
if n%2:
box_num += 1
box.append(nums[-1]%2)
if max(box)==2:
print("Yes")
else:
s = sum(box)
if not s:
print("No")
elif s==box_num and x%2==0:
print("No")
elif x == box_num and s%2 == 0:
print("No")
else:
print("Yes")
lines = sys.stdin.readlines()
N = int(lines[0])
for i in range(N):
n,x = map(int,lines[2*i+1].split())
nums = list(map(int,lines[2*i+2].split()))
box_num = n//2
box = []
for j in range(box_num):
a = nums[2*j] % 2
b = nums[2*j+1] % 2
if a == b:
box.append(a)
else:
box.append(2)
if n%2:
box_num += 1
box.append(nums[-1]%2)
if max(box)==2:
print("Yes")
else:
s = sum(box)
if not s:
print("No")
elif s==box_num and x%2==0:
print("No")
elif x == box_num and s%2 == 0:
print("No")
else:
print("Yes")
全部评论
奇偶处理到位
思路是先判断混合盒子一定Yes,然后考虑全偶,全奇(x偶),选所有盒子且奇数盒子是偶数个这三种情况为No,剩下为Yes
相关推荐