Oiclass Q&A P1626

OiClass.com Q&A P1626

问题:

提问:

帮我解决的人是我爸
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
#define space ' '
using namespace std;
int main(){
int n;
int a[33333];
cin>>n;
for(int i = 1;i <= n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
if(n%2==1){
cout<<(a[n/2]+a[n/2+1])/2;
}else{
cout<<a[n/2+1];
}
cout<<endl;
for(int i = 1;i <= n;i++)cout<<a[i]<<' ';
return 0;
}

这道题哪里错了啊QAQ

解答:

这个人竟然用我用不了的万能开头,不可饶恕!!!(开玩笑)

老规矩(只用了一次),先看题目,求中间数这种简单的事情还用问。开干(事非经过不知难),按照我一开始的思路,我写了一个桶排,一运行,发现不对劲,示例数据里面有重复的。如果用桶排的话重复数据就没了,然后我又尝试冒泡排序,也不行,实在是太慢了。最后没办法上度娘查,好不容易找到一篇CSDN的文章才知道原来在algorithm库有一个sort排序算法时间复杂度那可不是比冒泡快一星半点,而且逻辑代码不用自己写,调用函数就行了,NICE!!!搞定了排序,剩下的就很简单了,实现的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "iostream"
#include "algorithm"

using namespace std;
int n, a[30001];

int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
sort(a, a + n + 1);
if (n % 2 == 0) {
cout << (a[n / 2] + a[n / 2 + 1]) / 2;
} else {
cout << a[n / 2 + 1];
}
}

搞定,轻松加愉快!

哦,对了,那个说要叫爹,说到做到哦~~~~

Oiclass Q&A P1626
https://lixuannan.github.io/posts/58457
作者
CodingCow Lee
发布于
2022年8月4日
许可协议