码迷,mamicode.com
首页 > 其他好文 > 详细

刷过一题之NOIP2013花匠

时间:2016-01-24 14:20:38      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希望剩下的花排列得比较别致。具体而言,栋栋的花的高度可以看成一列整数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 }
C++ answer

 

刷过一题之NOIP2013花匠

标签:

原文地址:http://www.cnblogs.com/nightfury/p/5155015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!