zoukankan      html  css  js  c++  java
  • 【NOIP】2013 花匠

    【算法】贪心

    【题解】

    DP可以f[i][0],f[i][1]表示选了i分别满足条件AB的答案,其优化也是利用了下面的性质,不多赘述。

    想象数列的波动,最大值一定是取每个波峰和每个波谷,那么只要O(n)统计就可以了。

    #include<cstdio>
    #include<cstring>
    #include<cctype>
    #include<cmath>
    #include<algorithm>
    #define ll long long
    using namespace std;
    int read()
    {
        char c;int s=0,t=1;
        while(!isdigit(c=getchar()))if(c=='-')t=-1;
        do{s=s*10+c-'0';}while(isdigit(c=getchar()));
        return s*t;
    }
    /*------------------------------------------------------------*/
    const int inf=0x3f3f3f3f,maxn=100010;
    
    int n,a[maxn];
    
    int main()
    {
        scanf("%d",&n);
        for(int i=1;i<=n;i++)scanf("%d",&a[i]);
        bool ok=0,flag=0;
        for(int i=2;i<=n;i++)
        {
            if(a[i]>a[i-1]){flag=0;ok=1;break;}
            if(a[i]<a[i-1]){flag=1;ok=1;break;}
        }
        if(!ok){printf("1");return 0;}
        int ans=0;
        for(int i=2;i<=n;i++)
        {
            if(flag)
            {
                if(a[i]<a[i-1])
                {
                    flag=0;
                    ans++;
                }
            }
            else
            {
                if(a[i]>a[i-1])
                {
                    flag=1;
                    ans++;
                }
            }
        }
        printf("%d",ans+1);
        return 0;
    }
    View Code
  • 相关阅读:
    张照行 的第九次作业
    张照行 的第八次作业
    Learning by doing
    张照行 的第七次作业
    张照行 的第六次作业
    Java第七次作业
    java第五次作业
    Java第七次作业
    Java第六次课后作业
    第五次Java作业
  • 原文地址:https://www.cnblogs.com/onioncyc/p/7203806.html
Copyright © 2011-2022 走看看