Codeforces 1372D Omkar and Circle

Posted patt

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces 1372D Omkar and Circle相关的知识,希望对你有一定的参考价值。

题目链接

重新表述

环上有 $n$ 个非负整数,$n$ 是大于 1 的奇数。

每相邻两数之间插一块挡板,最初有 $n$ 块挡板。

相邻两挡板之间称为一

每个数可以被染成白色或黑色,最初每个数都是白色的。

将题目描述的操作重新表述为:任意选择连续的三段,将中间那一段里的数全染成黑色并将其两端的两块挡板抽走,使三段合为一段。

不断如此操作直到只剩一块挡板。此时 $n$ 个数成为一段,所有白色的数之和即是题目中所说的环上的最后一个数。

不变量

不难证明,每次操作过后,每一段内

  1. 总有奇数个数。
  2. 两端的数总是白色的。
  3. 相邻两白色的数之间总是隔着奇数个黑色的数。

最终局面一定满足条件2和条件3。可以证明,只有一块挡板且满足条件2和条件3的局面都是可以达成的最终局面。

转化

至此,原问题转化成:

任选环上紧挨着的两个数,在这两数之间把环剪开,得到一个数组。求数组的奇数位置上的数之和的最大值。

官方题解给出了一个简短的做法:

用输入的数组 $a_1, dots, a_n$ 构造一个新数组

$a_2, a_4, dots, a_{n-1}, a_1, a_3, dots, a_n, a_2, a_4, dots, a_{n-1}$

答案即此数组的长为 $frac{n + 1}{2}$ 的子段的和的最大值。

以上是关于Codeforces 1372D Omkar and Circle的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #655 (Div. 2) A. Omkar and Completion

E. Omkar and Forest——Codeforces Round #724 (Div. 2)

E. Omkar and Forest——Codeforces Round #724 (Div. 2)

F. Omkar and Akmar游戏,组合,逆元—— Codeforces Round #724 (Div. 2)

CFR#655F Omkar ans Modes

Codeforces Round #655 (Div. 2) D. Omkar and Circle