这场打得蛮菜的,很晚才出BC,还一堆罚时……
A - Sorted Arrays
题目大意:将给定数列划分成单调不增或单调不减的区间,求最少区间数。
贪心即可。
#include<cstdio> #include<algorithm> #define MN 1000001 using namespace std; int read_p,read_ca; inline int read(){ read_p=0;read_ca=getchar(); while(read_ca<'0'||read_ca>'9') read_ca=getchar(); while(read_ca>='0'&&read_ca<='9') read_p=read_p*10+read_ca-48,read_ca=getchar(); return read_p; } const int MOD=1e9+7; int n,a[MN],m=0,mmh=0; int main(){ int i,j; n=read(); for (i=1;i<=n;i++) a[i]=read(); for (i=2;i<=n;i++){ if (a[i]==a[i-1]) continue; if (m==-1&&a[i]>a[i-1]) mmh++,m=0;else if (m==1&&a[i]<a[i-1]) mmh++,m=0;else m=a[i]>a[i-1]?1:-1; } printf("%d\n",mmh+1); }