题目链接
思路:
根据题意,我们可以很清晰的判断数组只需要选取竖着的长条即可,水平选取只会让结果更趋近于平均值,所以我们直接暴力跑每一个竖直位置并且让每一个位置都当一次底求出最大值即可。
代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
const int N=1e5+7;
const double eps=1e-8;
const int mod=1e9+7;
const int inf=0x7fffffff;
const double pi=3.1415926;
signed main()
{
IOS;
int t;
cin>>t;
while(t--)
{
int n,m;
double num=0,arr[205][205];
cin>>n>>m;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
cin>>arr[i][j];
}
}
for(int i=0;i<m;i++)
{
double sum=0;
for(int j=0;j<n;j++)
{
sum+=arr[j][i];
num=max(num,sum/arr[j][i]);
}
}
printf("%.8lf\n",num);
}
return 0;
}