POJ 2181 贪心

思路:
贪心

对于每个波浪 ans+=最大值-最小值

注意最后一定是选最大值

//By SiriusRen
#include <cstdio>
using namespace std;
int n,a[150500],flag,ans;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        if(flag&&a[i]<a[i-1])ans+=a[i-1],flag=!flag;
        else if(!flag&&a[i]>a[i-1])ans-=a[i-1],flag=!flag;
    if(flag)ans+=a[n];
    printf("%d
",ans);
}

这里写图片描述

原文地址:https://www.cnblogs.com/SiriusRen/p/6532185.html