zoukankan      html  css  js  c++  java
  • 洛谷P1970 花匠

    题目描述

    花匠栋栋种了一排花,每株花都有自己的高度。花儿越长越大,也越来越挤。栋栋决定

    把这排中的一部分花移走,将剩下的留在原地,使得剩下的花能有空间长大,同时,栋栋希

    望剩下的花排列得比较别致。

    具体而言,栋栋的花的高度可以看成一列整数h1,h2..hn。设当一部分花被移走后,剩下的花的高度依次为g1,g2..gn,则栋栋希望下面两个条件中至少有一个满足:

    条件 A:对于所有g(2i)>g(2i-1),g(2i)>g(2i+1)

    条件 B:对于所有g(2i)<g(2i-1),g(2i)<g(2i+1)

    注意上面两个条件在m = 1时同时满足,当m > 1时最多有一个能满足。

    请问,栋栋最多能将多少株花留在原地。

    输入输出格式

    输入格式:

    输入文件为 flower .in。

    输入的第一行包含一个整数n,表示开始时花的株数。

    第二行包含n个整数,依次为h1,h2..hn,表示每株花的高度。

    输出格式:

    输出文件为 flower .out。

    输出一行,包含一个整数m,表示最多能留在原地的花的株数。

    输入输出样例

    输入样例#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 ≤ 1000,0 ≤ ℎi≤ 1000;

    对于 100%的数据,1 ≤ n ≤ 100,000,0 ≤ hi≤ 1,000,000,所有的hi 随机生成,所有随机数服从某区间内的均匀分布。

    思路:

      不管是条件A,还是条件B,都是波动的序列,所以我们只需找波动序列的长度就行。

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<algorithm>
    #include<vector>
    #include<cmath>
    using namespace std;
    int n,ans;
    int x,cnt;
    int main()
    {
        scanf("%d",&n);
        int a1,a2;
        cnt=2;
        scanf("%d%d",&a1,&a2);
        while(a1==a2)
        {
            scanf("%d",&a2);
            cnt++;
        }
        if(a1<a2)    x=1;
        else x=0;
        ans=2;
        for(;cnt<n;cnt++)
        {
            scanf("%d",&a1);
            if((x&&a2>a1)||((!x)&&a2<a1))
            {
                ans++;
                x=!x;
            }
            a2=a1;
        }
        cout<<ans;
        return 0;
    } 
  • 相关阅读:
    HDU 2089 不要62
    HDU 5038 Grade(分级)
    FZU 2105 Digits Count(位数计算)
    FZU 2218 Simple String Problem(简单字符串问题)
    FZU 2221 RunningMan(跑男)
    FZU 2216 The Longest Straight(最长直道)
    FZU 2212 Super Mobile Charger(超级充电宝)
    FZU 2219 StarCraft(星际争霸)
    FZU 2213 Common Tangents(公切线)
    FZU 2215 Simple Polynomial Problem(简单多项式问题)
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/7686446.html
Copyright © 2011-2022 走看看