[USACO13MAR]Poker Hands【贪心】

Pro

Luogu3078

Sol

既然是道水题,就把代码写的漂亮一点(逃

重题:Luogu1969(看到这两个题的题解中有一篇一模一样的……)

可能在 U S A C O 这里翻译的不是太好,可以去看重题的题意。每次删除肯定是一个区间删除,所以有人打线段树神马(比如xy大爷),其实可以用贪心来写,贪心策略是,如果后面的高度比现在存的高度要高,答案就加上高出来的那一块,更新存下来的高度。因为每次都是按照一个区间来删除,如果后面发现一个比较高的,可能会按照当前存的这个高度来删除,因为它比较矮。还要知道,答案变量的初始值是第一个的高度。

Code

#include<iostream>
#include<cstdio>
using namespace  std;

long long n , data[100005] , ans , maxx;

int main() {
    scanf("%lld",&n);
    for(int i=1; i<=n; i++)
        scanf("%lld",&data[i]);
    ans = maxx = data[1];
    for(int i=2; i<=n; i++)
        ans += (data[i]>maxx)?(data[i]-maxx):0 , maxx = data[i];
    printf("%lld",ans);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_43061009/article/details/82083599
今日推荐