MaoYuXing @ 2021-10-15 21:39:46
#include <cstdio>
#include <iostream>
#include <cmath>
#include <iomanip>
#include <algorithm>
using namespace std;
long long tol=0,m,cha;
double n,minn=10000000000,q,maxn=0;
int main()
{
cin>>m;
for(int i=1;i<=m;i++)
{
cin>>n;
tol+=n;
for(int j=1;j<=n;j++)
maxn=max(maxn,n);
for(int k=n;k>=1;k--)
minn=min(minn,n);
}
tol=tol-maxn-minn;
q=tol*1.0/(m-2);
for(int q=1;q<=m;q++)
{
if(q!=maxn&&q!=minn)
cha=fabs(n-q);
}
cout<<fixed<<setprecision(2)<<q*1.0<<" "<<cha*1.0;
return 0;
}
by 雨伞CKY @ 2021-10-15 22:45:05
@MaoYuXing 对于每个样本,你直接把输入存储至变量
如果你想节省空间,你应使用分治算法或使用nth_element
(建议你先完成P1923 【深基9.例4】求第 k 小的数 - 洛谷)。
以下程序可以获取输入的
#include <iostream>
using namespace std;
int m,n,big1,big2;
int main(){
cin >> m >> big1;
for (int i = 2;i <= m;i++){
cin >> n;
if (n > big1){
big2 = big1;
big1 = n;
}
else if (n > big2){
big2 = n;
}
}
cout << big2;
return 0;
}
你可以根据上面这种思路求出第二大、第二小的数,以计算误差。当然,你也可以存储为一个数组。
此外,当计算最大值和最小值(
by MaoYuXing @ 2021-10-16 21:24:04
@雨伞CKY
目前自身水平还触及不到分治思想 nth_element 不过还是谢谢您提出来的改正意见 感谢指点
by MaoYuXing @ 2021-10-16 21:25:17
@雨伞CKY 感谢您的程序