正文索引 [隐藏]

传送门

题目大意

定义矩阵压强=F/S,其中压力F=矩阵所有项之和,面积S=矩阵最后一行的所有项之和,求出最大压强的子矩阵,并输出这个压强。

思路

根据题设老老实实算就行了,因为面积由最后一行的元素和决定,所以倒过来去枚举每一列的所有子列求最大值就行了。

#include <bits/stdc++.h>

using namespace std;

int t;    
double a[205][205];

int main()
{
    scanf("%d", &t);
    
	while(t--)
    {
        int n, m;
        scanf("%d%d", &n, &m);
        
        for(int i = 0; i < n; i++)
            for(int j = 0; j < m; j++)
                scanf("%lf",&a[i][j]);
        
		double maxn = 1;
        for(int j = 0; j < m; j++)
        {
            double sum = 0;
            for(int i = 0; i < n; i++)
            {
                sum += a[i][j];
                maxn = max(maxn, sum / a[i][j] * 1.0);
            }
        }
        
        printf("%.8f\n", maxn);
    }
    
    return 0;
}