Mind Control(暴力+枚举)
Problem - 1291C - Codeforces
题意:给你n个数,n个人挑,每个人可以挑第一个或最后一个,并拿走,你第m个挑,但是你可以决定前k个人的挑法,最优挑法下求你能挑到的最大值一定大于多少
题解:枚举左边界与右边界,i~k个人挑左边界,那么另外(k-i)个人就挑有边界1,但是m可能大于k导致还要再挑(m - k -1)个不去确定的,再次枚举(m - k - 1)个人在左右边界的所有情况,找其中最大值的最小值,再找k种情况最优解的最大值
#include<iostream>
#include<algorithm>
using namespace std;
int a[4000];
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n,m,k;
scanf("%d%d%d",&n,&m,&k);
for(int i = 1; i <= n; i++)
scanf("%d",&a[i]);
k = min(m - 1,k);
int ans = 0;
for(int i = 0; i <= k; i++)
{
int l = i + 1,r = n - k +i;
int c = 1e9;
for(int j = 0; j <= m - k -1; j++)
{
c = min(c,max(a[l+j],a[r - (m-k-1)+j]));
}
ans = max(ans,c);
}
printf("%d\n",ans);
}
}