题意:
给你一个n*m的矩阵,求矩阵的子矩阵最大压强为多少,压力F为子矩阵所有元素之和,受力面积为子矩阵最后一行的元素之和?
思路:
由于我们只要求最大压力,所以我们根据公式求每一列的子列的最大压力即可。
代码:
#include <iostream> #include <cstdio> #include <cmath> #include <algorithm> #define inf 1000000007 #define eps 0.00000001 using namespace std; typedef long long ll; typedef unsigned long long ull; const int maxn=100005; inline int read() { char c=getchar(); int f=1, x=0; while(c>'9'||c<'0') { if(c=='-') { f=-1; } c=getchar(); } while(c<='9'&&c>='0') { x=(x<<3)+(x<<1)+(c^48); c=getchar(); } return f*x; } double a[205][205]; int main() { int t; 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 ma=1; for(int i=0;i<m;i++) { double sum=0; for(int j=0;j<n;j++) { sum=sum+a[j][i]; ma=max(ma,sum*1.0/a[j][i]); } } printf("%.8f\n",ma); } return 0; }