大连大学校赛-Raksasa的轻功

2022/4/16 23:43:00

本文主要是介绍大连大学校赛-Raksasa的轻功,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 

思路,用数组来存储下标连续坐标的最大位置,存储的不是某个状态的和而是坐标

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
#include<algorithm>
#include<map>
#include<cmath>
typedef long long ll;
using namespace std;
ll mo[200009];
ll suf[200009],pre[200009];
ll maX(ll num1,ll num2,ll num3) 
{
        if(num1>=num2)
        {
            if(num1>=num3)
            return num1;
            else
            return num3;
        }
        else{
            if(num2>=num3)
            return num2;
            else
            return num3;
        }
}
int main()
{
    int len;cin>>len;
    for(int i=1;i<=len;i++)
    scanf("%d",&mo[i]);
    ll mark=1;
    for(int i=1;i<=len;i++)
    {
        if(mo[i]>mo[i-1]) pre[i]=mark;
        else pre[i]=mark=i;//如果没法递增,一切都只好重新开始了.jpg 
    }
    mark=len;
    for(int i=len;i>=1;i--)
    {
        if(mo[i]>mo[i+1]) suf[i]=mark;
        else suf[i]=mark=i;
    } 
    ll ans=0; for(int i=1;i<=len;i++){
        ans=maX(ans,i-pre[i],suf[i]-i);
    }
    cout<<ans<<endl;
}

 



这篇关于大连大学校赛-Raksasa的轻功的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程