解决了以下问题:
Группа из n танцоров репетирует выступление на закрытии олимпиады.
Танцоры выстроены в ряд,
они выучили свои движения и не могут меняться местами.
Для некоторых из них уже куплен
белый танцевальный костюм, для некоторых уже куплен чёрный костюм,
а с костюмами остальных руководитель ансамбля ещё не определился.
Как раз в день, когда он собрался завершить художественный
замысел и заказать пошив оставшихся костюмов,
ему сообщили, что участники олимпиады будут в восторге,
если цвета костюмов танцоров
будут составлять палиндром, если смотреть
на них в том порядке, в котором танцоры выстроены на сцене.
Напомним, что палиндромом называется последовательность,
одинаково читающаяся как слева направо, так и справа налево.
Руководителю ансамбля идея очень понравилась, и теперь он
хочет заказать оставшиеся костюмы таким образом, чтобы
цвет костюма первого слева танцора совпадал с цветом костюма
первого справа танцора,
цвет костюма второго слева танцора совпадал с цветом костюма
второго справа танцора
и так далее.
Руководитель знает, сколько бурлей стоит один чёрный костюм и
сколько бурлей стоит один белый костюм.
Вам требуется определить, возможно ли заказать оставшиеся костюмы
таким образом, чтобы полученная последовательность цветов костюмов танцоров
была палиндромом, и, если это возможно,
то какое минимальное суммарное количество бурлей потребуется потратить?
Напомним, что танцоры не могу меняться местами, а также
в силу бюрократических формальностей не разрешается заказывать
новые костюмы для танцоров, чьи цвета на сцене уже определены,
даже если это позволит получить ответ меньшей итоговой стоимости.
但我的代码在某些测试中给出了错误的答案,请帮忙,我的代码是:
n, w, b=map(int, input().split()) # 0=белый, 1=чёрный, 2=не выбран
x=min(w, b)
if w>b:
u=1
else:
u=0
a=list(map(int, input().split()))
ans=0
for i in range(n//2+(n%2)):
if a[i]==0:
if a[n-i-1]==1:
ans=-1
break
elif a[n-i-1]==2:
ans+=w
a[n-i-1]=0
#
elif a[i]==1:
if a[n-i-1]==0:
ans=-1
break
elif a[n-i-1]==2:
ans+=b
a[n-i-1]=1
#
elif a[i]==2:
if a[n-i-1]==0:
ans+=w
a[i]=0
elif a[n-i-1]==1:
ans+=b
a[i]=1
elif a[n-i-1]==2:
ans+=x
a[i]=u
a[n-i-1]=u
print(ans)
问题是,在最后一个分支中,当你有一个元素和一个镜像元素没有定义时,你需要花钱买两套衣服
除非
i == n-i-1