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

Posted kanoon

tags:

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

题目链接:https://codeforces.com/contest/1372/problem/D

题意

给出奇数个数围成的环,每次可以将一个数替换为相邻两个数的和并删除相邻的两个数,问最后余下的数的最大值。

题解

即从 $n$ 个数中选取 $frac{n+1}{2}$ 个数,且这些数中最多有一对数相邻的和的最大值。

代码

#include <bits/stdc++.h>
using ll = long long;
using namespace std;
int main() {
    int n; cin >> n;
    int a[n] = {};
    ll sum = 0, now = 0;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        sum += a[i];
        if (i % 2 == 0) now += a[i];
    }
    ll ans = now;
    for (int i = 1; i < n; i++) {
        now = sum - now + a[i - 1];
        ans = max(ans, now);
    }
    cout << ans << "
";
}

 

以上是关于Codeforces Round #655 (Div. 2) D. Omkar and Circle的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #655 (Div. 2)

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

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

Codeforces Round #655 (Div. 2) A-D完

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)