NOIP 2013 花匠 神仙操作

2019-05-13 07:11:42来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

题目:https://www.luogu.org/problemnew/show/P1970

今天又学习了一个新的神仙操作;

标签是DP,想了一下,没什么心情写,默默打开题解——(狂喜!)

 

一位大佬(LittlePrincess)的思路简直是颠覆脑回路!!

 

根据A,B两个条件的描述,只要求有几个波峰波谷就好了。如果在上升突然下降ans就++;

反之同理;

注意,如果在最后的时候还在下降要把最后的一个加上;

因为在最后还在上升时,h[n+1](=0)<h[n] 所以ans会加上;

但是在最后还在下降时,h[n+1]<h[n],ans不会加上,所以要特判一下;

可以算是贪心的做法了(相对于正解DP来说);

上代码

#include<cstdio>
using namespace std;

int n,h[150000],ans=1;
bool jud;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&h[i]);
    }
    if(h[2]>=h[1]) jud=1;
    for(int i=1;i<=n;i++)
    {
        if(jud==0&&i==n) 
        {
            ans++;
            break;
        }
        if(jud==1)
        {
            if(h[i+1]<h[i]) 
            {
                ans++;
                jud=0;
                continue;
            }
        }
        if(jud==0)
        {
            if(h[i+1]>h[i])
            {
                ans++;
                jud=1;
                continue;
            }
        }
    }
    printf("%d",ans);
    return 0;
}

 


原文链接:https://www.cnblogs.com/WHFF521/p/10851332.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:常见排序算法(三)

下一篇:信息学奥赛一本通 提高篇 序列第k个数 及 快速幂