洛谷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\n",ans+2);
    return 0;
}

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

转载于:https://www.cnblogs.com/xzz_233/p/7425457.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值