题目大意
定义矩阵压强=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; }
评论
还没有任何评论,你来说两句吧!