NOIP 2013庭師

羅区P1970庭師

羅区ポータル

JDOJ 2230:[NOIP2013]庭師D2 T2

JDOJポータル

説明

別の庭師が植物花あたりの花の行を植えた後、独自の高さを有しています。花はますます大きく、より多くの混雑し成長しました。行の別の後、花の残りの部分にスペースが育つことができるように、残り同時に、その場に残る取り除か花に参加することを決めた、と多くはフラワーアレンジメントの残りの部分は、よりシックだった願っています。

具体的には、別の後の花の高さは、整数ℎ1、ℎ2、...、ℎnとみなすことができます。削除花被の一部を設定する場合は、花の残りの部分は非常にG1、G2、...、GM、そして次の2つの条件は、少なくとも一つの満たされていることを非常に期待しました。

条件A:すべての1≤iに対してはm / 2、G2iと> G2iと-1、及びG2iと> G2iと+ 1≤。

条件B:すべての1≤iについてはm / 2≤、G2iと<G2iと-1、及びG2iと<G2iと+ 1。

上記2つの条件が、M> 1が最も出会うにあるとき同時に、1 = Mを満足していることに留意されたいです。

別の後の花は、ほとんどが所定の位置にとどまることができますどのくらい私は、お願いします。

入力

入力の最初の行は、花の開始時の木の数を表す整数を含んでいます。
二行目はℎ1続く整数を、含まれている、ℎ2は、...、ℎn、植物あたりの花の高さを表しています。

出力

出力の行は、整数mが含まれている、木の花の数を表している場所までにしておくことができます。

サンプル入力

5 3 2 1 2

サンプル出力

3

ヒント

例説明[O]

わずか3花を保持するいくつかの方法は、最初の行1,4,5、5,1,2の高さは、それぞれ、残して、例えば、ありますが、条件Bを満たします

[データ範囲]

データの20%を、N≤10。

データの30%、N≤25。

データの70%を、N≤1000年≤ℎi≤1000,0。

1,000,000≤ℎi≤データの100%、100,000,0≤1≤nに、全てℎiランダムに生成され、一定の範囲内でのすべての一様に分布する乱数に従います。

ソース

グループを改善NOIP2013

ソリューション:

それは見ることができます:\(2I \)であっても、されている\(。。1-2i / 1 2I + \)が奇数である場合、この関数は、 "ダウン"画像として見ることができます。すなわち:山と谷。その後、我々はその答えに到達する列挙することにより、このプロセスをシミュレートすることができるようになります。

コード:

#include<cstdio>
using namespace std;
const int maxn=1e5+10;
int n,ans=1;
int h[maxn];
bool flag;
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&h[i]);
    if(h[2]>=h[1])
        flag=1;
    for(int i=1;i<=n;i++)
    {
        if(!flag&&i==n)
        {
            ans++;
            break;
        }
        if(flag)
            if(h[i+1]<h[i])
            {
                ans++;
                flag=0;
                continue;
            }
        if(!flag)
            if(h[i+1]>h[i])
            {
                ans++;
                flag=1;
                continue;
            }
    }
    printf("%d",ans);
    return 0;
}

おすすめ

転載: www.cnblogs.com/fusiwei/p/11781075.html