NOIP 2013 花匠 神仙操做

題目:https://www.luogu.org/problemnew/show/P1970學習

今天又學習了一個新的神仙操做;ui

標籤是DP,想了一下,沒什麼心情寫,默默打開題解——(狂喜!)spa

 

一位大佬(LittlePrincess)的思路簡直是顛覆腦回路!!code

 

根據A,B兩個條件的描述,只要求有幾個波峯波谷就行了。若是在上升忽然降低ans就++;blog

反之同理;get

注意,若是在最後的時候還在降低要把最後的一個加上;it

由於在最後還在上升時,h[n+1](=0)<h[n] 因此ans會加上;io

可是在最後還在降低時,h[n+1]<h[n],ans不會加上,因此要特判一下;class

能夠算是貪心的作法了(相對於正解DP來講);di

上代碼

#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;
}
相關文章
相關標籤/搜索