洛谷 4393 序列问题

[BOI2007] Sequence 序列问题

题面

题解

贪心

考虑一个区间中max的贡献,它在区间端点则最少贡献一次,否则最少两次。除去这个max,剩下的区间是子问题。

这给出了一个解的下界,也给出了达到下界的方案。

解的值等于相邻两数max之和。

代码

//https://www.luogu.com.cn/problem/P4393
//2021-07-10 AliCCC

#include <cstdio>
#include <algorithm>
using std::max;

const int MAXN=1000111;

int N;
int A[MAXN];


int main(){
	
	scanf("%d", &N);
	for(int i=1;i<=N;++i)	scanf("%d", &A[i]);
	
	long long Ans=0LL;
	for(int i=1;i<N;++i){
		Ans+=max(A[i], A[i+1]);
	}
	printf("%lld\n", Ans);
	
	return 0;
}
posted @ 2021-10-06 16:17  Pickupwin  阅读(44)  评论(0编辑  收藏  举报