lqb_算法(2)-2.蓝桥杯2024年第十五届省赛真题-最强小队

时间:2024-12-13 22:19:17

题目描述

在蓝桥王国,一支勇士队伍依照既定的顺序排列。队伍由 n 位勇士组成,每位勇士都有一个力量值,分别为 a1, a2, . . . , an。

国王下达了一项命令,要求从这支队伍中选拔一支精英小队,这支小队需满足以下条件:

1. 小队成员必须按照原队伍的次序来组成,即小队成员的排列顺序必须与原队伍保持一致。

2. 小队的首位和末位勇士的力量必须大于小队中其他所有勇士的力量。

对于一个小队,其强度与成员数量成正比,即成员数量越多,小队越强大。

现在,国王想要知道,最强小队的成员数量是多少。请你帮他找到并计算出最强小队的成员数量。

输入格式

输入的第一行包含一个整数 n,表示勇士的数量。

第二行包含 n 个整数 a1, a2, . . . , an ,相邻整数之间使用一个空格分隔,表示每位勇士的力量值。

输出格式

输出一行包含一个整数,表示最强小队的成员数量。

样例输入

复制

3
3 1 2

样例输出

复制

3

提示

【样例说明】

在给定的样例中,勇士队伍的力量值为 [3, 1, 2],我们可以选择的精英小队组建方法有:

1. 只选择第一位勇士,即 [3]。

2. 只选择第二位勇士,即 [1]。

3. 只选择第三位勇士,即 [2]。

4. 选择第一位勇士和第二位勇士,即 [3, 1]。

5. 选择第一位勇士和第三位勇士,即 [3, 2]。

6. 选择第二位勇士和第三位勇士,即 [1, 2]。

7. 选择所有勇士,即 [3, 1, 2]。

显然,选择所有勇士 [3, 1, 2] 组成的小队是最强的。因此,最强小队的成员数量为 3。

【评测用例规模与约定】

对于 10% 的评测用例,1 ≤ n ≤ 102,1 ≤ ai ≤ 103。

对于 30% 的评测用例,1 ≤ n ≤ 103,1 ≤ ai ≤ 105。

对于所有评测用例,1 ≤ n ≤ 105,1 ≤ ai ≤ 109。

AC:

#include<bits/stdc++.h>

using namespace std;

const int N = 1e5+5;

int main(){

    int i,j=0,n,a[N],t=1,k;

    cin>>n;

    for(i=0;i<n;i++) cin>>a[i];

    while(j<n-1){

        k=j+1;

        while(a[k]<a[j]&&k<n) k++;

        if(k==n) --k;

        t=max(t,k-j+1); j=k;

    }

    cout<<t;

    return 0;

}