zoukankan      html  css  js  c++  java
  • 洛谷1970 花匠

    洛谷1970 花匠


    原题链接


    交题记录

    21:48 1A


    题解

    诡异的条件(最讨厌这种东西了):
    也就是说,花的高度要一上一下一上一下一上一下
    那么,想一想贪心的方法
    一上一下中间会有一个转折点
    如果一个点是转折点(即:同时高于左右或是低于左右)就能令ans++。
    再加上首尾,大水题。
    正确性?

    • 当然是错的。
      随便一个样例卡飞
      233 233 233 233 233 ans=1 out=2
      然而出题人并不恶心
    • 除了上面?
      当然还是错的。。。
      2 233 233 2 ans=3 out=2
      所以说相邻的高度相等比较麻烦。直接删掉反正没用。。。
    • 现在呢?
      当然是对的啦。。。

    Code

    // It is made by XZZ
    #include<cstdio>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #define rep(a,b,c) for(rg int a=b;a<=c;a++)
    #define drep(a,b,c) for(rg int a=b;a>=c;a--)
    #define erep(a,b) for(rg int a=fir[b];a;a=nxt[a])
    #define il inline
    #define rg register
    #define vd void
    typedef long long ll;
    il int gi(){
        rg int x=0,f=1;rg char ch=getchar();
        while(ch<'0'||ch>'9')f=ch=='-'?-1:f,ch=getchar();
        while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
        return x*f;
    }
    const int maxn=100010,maxm=maxn<<1;
    int h[maxn];
    int main(){
        int n=gi();
        rep(i,1,n){
            h[i]=gi();
            if(h[i]==h[i-1])--i,--n;
        }
        int ans=0;
        rep(i,2,n-1)if((h[i]>h[i-1]&&h[i]>h[i+1])||(h[i]<h[i-1]&&h[i]<h[i+1]))++ans;
        printf("%d
    ",ans+2);
        return 0;
    }
    

    PS.天天刷联赛水题写博客都好无聊。。。

  • 相关阅读:
    hdu 1175
    hdu 2197
    STL的学习
    数据结构之线性结构栈
    Linux下Fork与Exec使用
    散列技术之哈希
    检索之二分检索
    检索之顺序检索
    程序员该怎样放松?8个好网站推荐
    外部碎片和内部碎片的区别
  • 原文地址:https://www.cnblogs.com/xzz_233/p/7425457.html
Copyright © 2011-2022 走看看