# 官方题解|欢乐赛#37 T5
2025-01-08 14:39:27
发布于:浙江
9阅读
0回复
0点赞
T5
本题首先的思路应该是要求出这个序列中的「中间值」,按照题目要求先排个序,再取下标为 对应的序列的值即可(下标从1开始哦)。然后你要枚举一下,这个里面有多少数是和你求的「中间值」一样的,因为你对于某一个「中间值」进行,它就会变大,跑到序列后面去,整个序列的中间值其实没有改变,所以和原序列「中间值」相等的数都要进行操作才能改变这个序列的「中间值」。
#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
int n, a[N];
void solve(){
cin >> n;
for(int i = 1; i <= n; i ++ ) cin >> a[i];
sort(a + 1, a + 1 + n);
int ans = 0;
int idx = (n + 1) / 2;
while(a[idx] == a[(n + 1) / 2] && idx <= n) {
ans ++;
idx ++;
}
cout << ans << endl;
}
int main(){
int t;cin>>t;
while(t --){
solve();
}
return 0;
}
这里空空如也
有帮助,赞一个