1345: [Baltic2007]序列问题Sequence
第一个数是必须和第二个数合并的。
因为考虑第三个数比第二个大的情况下,1合2划算
第三个数比第二个小的情况下,1只能合2。综上依此类推
BZOJ 1345
/**************************************************************
Problem: 1345
User: Dream_Tonight
Language: C++
Result: Accepted
Time:1736 ms
Memory:5196 kb
****************************************************************/
#include <algorithm>
#include <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <cstdio>
#include <cmath>
#include <stack>
#include <queue>
#include <list>
#include <map>
#include <set>
using namespace std;
#define lson l , m , rt << 1
#define rson m + 1 , r , rt << 1 | 1
typedef long long ll;
typedef pair<int, int> pii;
const int maxn = 1e6 + 7;
const int inf = 2139062143;
const int mod = 10007;
ll n, ret;
int a[maxn];
int main() {
#ifndef ONLINE_JUDGE
freopen("weather.in", "r", stdin);
#endif
scanf("%lld", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
if (i >= 1) {
ret += max(a[i], a[i - 1]);
}
}
if (n == 2) printf("%d\n", max(a[0], a[1]));
if (n == 1) printf("0\n");
if (n >= 3) printf("%lld\n", ret);
return 0;
}