(一)思路:
满足升序又要是中位数之和最大,根据规律可以发现,要进行k次删除工作,每次都要删除一组中右边n/2个数,利用栈的思想,先入栈,在全部入栈后,进行出栈操作,取出栈顶元素后又出栈,接着开始进行k-1操作直到k为0,结束,然后把所取出栈顶的数相加则最大中位数之和就出来了。
(二)代码:
#include<iostream> #include<stack> using namespace std; int main() { int t; cin>>t; while(t--) { int n,k; cin>>n>>k; stack<long long>s; int nk=n*k; while(nk--) { int r; cin>>r; s.push(r); } long long sum=0; while(k--) { int c=n/2; while(c--) { s.pop(); } sum+=s.top(); s.pop(); } cout<<sum<<endl; } return 0; }