洛谷 P1970 [NOIP 2013 提高组] 花匠
题目背景NOIP2013 提高组 D2T2题目描述花匠栋栋种了一排花每株花都有自己的高度。花儿越长越大也越来越挤。栋栋决定把这排中的一部分花移走将剩下的留在原地使得剩下的花能有空间长大同时栋栋希望剩下的花排列得比较别致。具体而言栋栋的花的高度可以看成一列整数 h1,h2,…,hn。设当一部分花被移走后剩下的花的高度依次为 g1,g2,…,gm则栋栋希望下面两个条件中至少有一个满足条件 A对于所有的 1≤i≤2m有 g2ig2i−1同时对于所有的 1≤i≤2m有 g2ig2i1条件 B对于所有的 1≤i≤2m有 g2ig2i−1同时对于所有的 1≤i≤2m有 g2ig2i1。注意上面两个条件在 m1 时同时满足当 m1 时最多有一个能满足。请问栋栋最多能将多少株花留在原地。输入格式第一行包含一个整数 n表示开始时花的株数。第二行包含 n 个整数依次为 h1,h2,…,hn表示每株花的高度。输出格式输出一行包含一个整数表示最多能留在原地的花的株数。输入输出样例输入 #1复制5 5 3 2 1 2输出 #1复制3说明/提示输入输出样例说明有多种方法可以正好保留 3 株花例如留下第 1、4、5 株高度分别为 5、1、2满足条件 B。数据范围对于 20%的数据n≤10对于 30%的数据n≤25对于 70%的数据n≤10000≤hi≤1000对于 100%的数据1≤n≤1050≤hi≤106所有的 hi 随机生成所有随机数服从某区间内的均匀分布。#includebits/stdc.h using namespace std; const int N1e510; int h[N]; int n; int main() { cinn; for(int i1;in;i) { cinh[i]; } int prev0,cnt0; for(int i1;in;i) { int dh[i1]-h[i]; if(d0) continue; d(d0)?1:-1; if(prev!d) { cnt; } prevd; } coutcnt1endl; return 0; }