[NOIP2013]花匠

https://nanti.jisuanke.com/t/T2017

 dp[i][0]滿足條件A的最大個數

dp[i][1]滿足條件B的最大個數

#include <iostream>
#include <algorithm>
#include <cstring>
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int idata=1e5+5;
const int inf=0x3f3f3f3f+5;
const int mod=10;
int dp[idata][2];
int step[idata];
int maxx=-inf,minn;
int i,j,k;
int n,m,t;
int flag,cnt,len,sum;

void initial()
{
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>step[i];
    }
    dp[1][0]=dp[1][1]=1;

    return ;
}

int main()
{
    initial();

    for(i=1;i<=n;i++)
        for(j=i+1;j<=n;j++)
    {
        if(step[j]>step[i])
            dp[j][0]=max(dp[j][0],dp[i][1]+1);
        if(step[j]<step[i])
            dp[j][1]=max(dp[j][1],dp[i][0]+1);

    }

    for(i=1;i<=n;i++)
    {
        maxx=max(dp[i][0],maxx);
        maxx=max(dp[i][1],maxx);
    }

    cout<<maxx<<endl;
    return 0;
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章