牛客第六场-Combination of Physics and Maths

简介: 题意:选出一个子矩阵,使得所求的压强最大,压强是指这个子矩阵中每个元素之和 / 这个子矩阵最下面一行的元素之和

题目链接


微信图片_20220530181602.png

微信图片_20220530181643.png


打了六场牛客了,第一次写一篇这题的博客叭

对我个人来讲,这个题可能是卡我平时的代码习惯或者是代码风格以及不好的写法(被安排得十分安详)


题意:选出一个子矩阵,使得所求的压强最大,压强是指这个子矩阵中每个元素之和 / 这个子矩阵最下面一行的元素之和

当然这个题选一列就完事了,多选了反而还比较麻烦。只需要维护每一列元素的前缀和,并且在计算的过程中除以当前这个数,这样就OK,记得要维护当前的最大压强值

代码比较简单,没有什么新鲜感,平平无奇


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read() {
    ll c = getchar(), Nig = 1, x = 0; while (!isdigit(c) && c != '-')c = getchar();
    if (c == '-')Nig = -1, c = getchar();
    while (isdigit(c))x = ((x << 1) + (x << 3)) + (c ^ '0'), c = getchar();
    return Nig * x;
}
#define read read()
double a[208][208];
double sum[208];
int main() {
    int T = read;
    while (T--) {
        int n = read, m = read;
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) scanf("%lf", &a[i][j]);
        }
        double ans = 0;
        for (int i = 1; i <= m; i++) {
            sum[i] = 0;
            for (int j = 1; j <= n; j++) {
                sum[i] += a[j][i];
                double tt = (sum[i]) / (a[j][i]);
                if (tt > ans) ans = tt;
            }
        }
        printf("%.8f\n", ans);
    }
    return 0;
}
/**
1
3 3
1 3 5
6 8 9
2 7 4
**/


重点是想要通过这篇博客记录自己的不足:


  1. 没必要浪费不必要的时间复杂度来初始化数组,如果在下面处理问题的时候可以顺便把数组初始化在使用的情况下,就不必要在开头进行初始化。


  1. 如果遇到要除法得到小数点后面几位的时候,可以考虑将需要用到的数组设置为double类型,一面会发生十分玄学的问题。


  1. 手贱分不出n or m


开发者涨薪指南

48位大咖的思考法则、工作方式、逻辑体系

目录
打赏
0
0
0
0
5
分享
相关文章
【PAT甲级 - C++题解】1096 Consecutive Factors
【PAT甲级 - C++题解】1096 Consecutive Factors
125 0
LeetCode 407. Trapping Rain Water II
我们把最外面的四边当成四面墙,想象海水面不断的升高,首先会浸过墙面最低的格子,如果墙面最低格子的四周(出了在墙面的格子)有比它矮的格子,那么这就可以形成一个蓄水池,蓄水池的最高高度就是墙面最低的格子,于是我们计算这个蓄水池可以获得的蓄水量;然后这个蓄水池被添加到墙面中;继续在墙面中找最低的格子;
166 0
LeetCode 407. Trapping Rain Water II
LeetCode 42 Trapping Rain Water
给定n个非负整数,每个非负整数表示一个宽度为1的柱子,计算下雨后能够捕获多少水.
89 0
LeetCode 42 Trapping Rain Water
【论文阅读】(2017)The late acceptance Hill-Climbing heuristic
【论文阅读】(2017)The late acceptance Hill-Climbing heuristic
629 0
【论文阅读】(2017)The late acceptance Hill-Climbing heuristic
Educational Codeforces Round 113 (Rated for Div. 2) C - Jury Meeting (思维 组合数)
Educational Codeforces Round 113 (Rated for Div. 2) C - Jury Meeting (思维 组合数)
131 0
CodeForces 1195C Basketball Exercise (线性DP)
CodeForces 1195C Basketball Exercise (线性DP)
140 0
codeforces Educational Codeforces Round 49 (Rated for Div. 2) C题
刚开始拿到这题很懵逼,知道了别人的思路之后开始写,但是还是遇到很多坑,要求求P2/S最大。p=a b。就是求(a2+ b2 +2ab)/ab最大,也就是a/b +b/a最大。那么题意就很明显了。
145 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等