zoukankan      html  css  js  c++  java
  • day2 花匠

    day2的第二题其实也蛮友好的呢,刚看还被吓了下,仔细一想,诶,这不是找找拐点不就完了么?时间复杂度仅为O(n)。注意,一段连续且相等的数字,只留一个,其他删掉,下面贴出代码:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,h[100005],ans=1,ans2;
    int main()
    {
        freopen("flower.in","r",stdin);
        freopen("flower.out","w",stdout);
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&h[i]);
            if(h[i]==h[i-1])
            i--,n--;
        }
        for (int i=2;i<=n-1;i++)
        {
            if(h[i]>h[i-1]&&h[i]>h[i+1]||h[i]<h[i-1]&&h[i]<h[i+1])
            ans++;
        }
        cout<<ans+1;
        return 0;
    }

    当然,利用动态规划+线段树或树状数组也是可以完成的,时间复杂度会高一些,为O(nlogn),下面同样给出代码:

    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    using namespace std;
    #define MAXN 100010
    #define lowbit(x)(((~(x))+1)&x)
    #define MAXH 1000010
    #define For(i,x) for (int i=x;i;i-=lowbit(i))
    #define rep(i,x) for (int i=x;i<=maxh;i+=lowbit(i))
    int t0[MAXH],t1[MAXH];
    int h[MAXN],n,maxh=0;
    int f[MAXN][2],ans=0;
    void Add0(int x,int y) {
        rep(i,x) t0[i]=max(t0[i],y);
    }
    void Add1(int x,int y) {
        rep(i,x) t1[i]=max(t1[i],y);
    }
    int Max0(int x) {
        int rec=0;
        For(i,x) rec=max(rec,t0[i]);
        return rec;
    }
    int Max1(int x) {
        int rec=0;
        For(i,x) rec=max(rec,t1[i]);
        return rec;
    }
    int main() {
        scanf("%d",&n);
        for (int i=0;i++<n;) {
            scanf("%d",&h[i]);
            maxh=max(maxh,++h[i]);
            f[i][0]=f[i][1]=1;
        }
        maxh++;
        memset(t0,0,sizeof(t0)),memset(t1,0,sizeof(t1));
        for (int i=0;i++<n;) {
            f[i][0]=max(Max0(h[i]-1)+1,f[i][0]);
            f[i][1]=max(Max1(maxh-h[i]-1)+1,f[i][1]);
            Add0(h[i],f[i][1]),Add1(maxh-h[i],f[i][0]);
            ans=max(ans,max(f[i][0],f[i][1]));
        }
        printf("%d\n",ans);
        return 0;

    代码摘自网上,,,

    清清正正射命丸文是也~

  • 相关阅读:
    Xcode7下模拟器输入文本无法显示系统键盘的解决办法
    Mac系统下开启和关闭隐藏文件的方法
    iOS常用第三方开源框架和优秀开发者博客等
    UILabel 的一个蛋疼问题
    学习进度条
    学习进度条
    四则运算2
    学习进度条
    第一次被要求连接数据库的课堂测试
    课后作业06多态与接口
  • 原文地址:https://www.cnblogs.com/Ayateriteri/p/5664742.html
Copyright © 2011-2022 走看看