NC16535. [NOIP2013]花匠
描述
输入描述
第一行包含一个整数 n ,表示开始时花的株数。
第二行包含 n 个整数,依次为 h1,h2,...,hn ,表示每株花的高度。
输出描述
一个整数 m ,表示最多能留在原地的花的株数。
示例1
输入:
5 5 3 2 1 2
输出:
3
C++14(g++5.4) 解法, 执行用时: 28ms, 内存消耗: 1420K, 提交时间: 2019-12-01 12:02:02
#include <iostream> #include <cstdio> #define N 100002 using namespace std; int n,ans=2,h,a[N],t; int main() { scanf("%d",&n); while(n--) { scanf("%d",&h); //输入高度 h!=a[t]?a[++t]=h:a[t]=a[t]; //去重 } for(int i=2;i<t;i++) ans+=a[i]>max(a[i-1],a[i+1])||a[i]<min(a[i-1],a[i+1])?1:0; //如果比两边高,或者比两边低,则保留 printf("%d\n",ans); return 0; }
C++(clang++ 11.0.1) 解法, 执行用时: 40ms, 内存消耗: 476K, 提交时间: 2022-11-25 12:01:31
#include<iostream> using namespace std; int n,q=1,A; int main(){ cin>>n>>A; for(int i=1,a,c,C=0;i<n;i++){ cin>>a; if(a!=A){ if(a>A) c=1; else c=-1; if(c!=C)q++,C=c; A=a; } }cout<<q; }