刷过一题之NOIP2013花匠
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷过一题之NOIP2013花匠相关的知识,希望对你有一定的参考价值。
花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致。具体而言,栋栋的花的高度可以看成一列整数h1,h2, … ,hn。设当一部分花被移走后,剩下的花的高度依次为g1,g2, … ,gm,则栋栋希望下面两个条件中至少有一个满足:
注意上面两个条件在m=1时同时满足,当m>1时最多有一个能满足。请问,栋栋最多能将多少株花留在原地。
输入:
第二行包含n个整数,依次为h1,h2, … ,hn,表示每株花的高度。
输出:
输出一行,包含一个整数m,表示最多能留在原地的花的株数。
输入示例:
5
5 3 2 1 2
输出示例:
3
数据范围:1≤n≤100,000,0≤hi≤1,000,000,所有的hi随机生成,所有随机数服从某区间内的均匀分布。
1 #include<iostream> 2 using namespace std; 3 int a,temp=2,ans,n; 4 int main() 5 { 6 cin>>a;//输入花的数量 7 int con; 8 cin>>con;//预先输入第一个花,以便判断(因为第一个花不能参与判断) 9 for(int i=1;i<a;i++) 10 { 11 cin>>n;//输入花的高度 12 //我们用temp记录刚刚输入的花高度是否满足条件A或条件B 13 //一开始temp值为2,表示既不满足A,也不满足B 14 if(n>con&&temp!=1) {ans++;temp=1;}//我们用temp=1表示该花满足条件A 15 if(n<con&&temp!=0) {ans++;temp=0;}//我们用temp=0表示该花满足条件B 16 con=n;//这个con储存的是上一个花的高度,所以需要更新 17 } 18 cout<<ans+1;//我也不知道这里为什么要+1,但是不加1答案少1,加上1提交就对了 19 //system("pause>nul"); 20 return 0; 21 }
以上是关于刷过一题之NOIP2013花匠的主要内容,如果未能解决你的问题,请参考以下文章