【题解】第k个出队
题意
有一个有个元素的队列,你可以控制第
个出队的元素是队首还是队尾,除此之外你还可以额外控制
次选择出队的元素是队尾或队首。求第
次出队的元素最优情况下至少会大于多少呢。
题解
由于要最优的情况下,那么这额外的控制次肯定控制在前
次出队中才有贡献。首先让
。我们直接暴力去枚举就可以了假设我们在轮到我们前面已经有
个人从队首拿了元素,那么也就是说剩下的
个人是从队尾拿的,我们在第
次能能拿的元素也就是
,我们在枚举的过程中由于是求最差情况下的最大值,所以我们在更新的时候再取个
。
复杂度
时间复杂度
代码
#include <bits/stdc++.h> using namespace std; const int inf=0x3f3f3f3f; const int N=1e3+5; int a[N]; int main() { int t; scanf("%d",&t); while(t--) { int n,m,k; scanf("%d%d%d",&n,&m,&k); m=min(m,k-1); for (int i = 1; i <= n; i++) scanf("%d",&a[i]); int ans = 0; for (int i = 0; i <= m; i++) { int minn = inf; for (int j = i + 1; j <= k - m + i; j++) minn = min(minn, max(a[j], a[j + n - k])); ans = max(ans, minn); } printf("%d\n",ans); } return 0; }