您将得到一个由N个整数组成的数组。如果使用以下操作使阵列完整,那么使整个阵列均匀所需的最小操作数是多少
注意:可以证明这总是可能的
选择一个索引
并执行以下操作:
p=A[i]+A[i+1];Q=A[i]-A[i+1]
A[i]=p;A[i+1]=Q
整项质询的修正案
这是我的密码
for i in range(int(input())):
N=int(input())
arr=list(map(int,input().split()))
dic=[i for i in range(N) if arr[i]%2!=0 ]
value=0
for i in range(len(dic)-1):
k=dic[i+1]-dic[i]
value+=k
print(value)
测试用例
testcase1:
N=6
arr= 1 6 4 3 4 2
my output = 3
expected output = 4
我不明白为什么在这个测试用例中需要四个操作,因为它只需要三个操作
testcase 2:
N=6
arr = 1 6 4 3 5 2
my output = 4
expected output =3
在这个测试用例中,无论我们应用了多少个操作,所有整数都不会转换成偶数
如果有人能告诉我testcase2是如何在三个操作中完成的
testcase1将在四个操作中完成
我做错了吗
它可以通过位操作来解决
下面是一个代码,您可以尝试解决您的问题
这个想法很简单。我没有使用过任何操作,但我会这样做
对于一个
i
,如果A[i]
是偶数,我就不在乎了。考虑所有{{CD1}},这样^ {< CD2}}是奇数。[1 6 4 3 5 2]
->[7 -5 4 3 5 2]
,A[0] = A[0] + A[1]
,A[1] = A[0] - A[1]
[7 -5 4 3 5 2]
->[2 12 4 3 5 2]
,A[0] = A[0] + A[1]
,A[1] = A[0] - A[1]
[2 12 4 3 5 2]
->[2 12 4 8 -2 2]
,A[3] = A[3] + A[4]
,A[4] = A[3] - A[4]
下面是一个可能的实现:
注意
done_last
标志,我将让您自行决定相关问题 更多 >
编程相关推荐