• 牛客第六场-Combination of Physics and Maths


    题目链接
    在这里插入图片描述
    在这里插入图片描述

    打了六场牛客了,第一次写一篇这题的博客叭
    对我个人来讲,这个题可能是卡我平时的代码习惯或者是代码风格以及不好的写法(被安排得十分安详)

    题意:选出一个子矩阵,使得所求的压强最大,压强是指这个子矩阵中每个元素之和 / 这个子矩阵最下面一行的元素之和
    当然这个题选一列就完事了,多选了反而还比较麻烦。只需要维护每一列元素的前缀和,并且在计算的过程中除以当前这个数,这样就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
    ", ans);
        }
        return 0;
    }
    /**
    1
    3 3
    1 3 5
    6 8 9
    2 7 4
    
    
    **/
    
    

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

    1. 没必要浪费不必要的时间复杂度来初始化数组,如果在下面处理问题的时候可以顺便把数组初始化在使用的情况下,就不必要在开头进行初始化。
    2. 如果遇到要除法得到小数点后面几位的时候,可以考虑将需要用到的数组设置为double类型,一面会发生十分玄学的问题。
    3. 手贱分不出n or m
  • 相关阅读:
    C#数据结构之串
    DevExpress ChartControl 设置它的标题
    [转]DevExpress GridControl 关于使用CardView的一点小结
    将ImageList中的图片转化成byte数组
    可变参数
    jquery动态移除/增加onclick属性详解
    div中英文无法自动换行的解决办法
    jQuery三种事件绑定方式.bind(),.live(),.delegate()
    纯CSS画的基本图形(矩形、圆形、三角形、多边形、爱心、八卦等),NB么?
    关于JS、JQuery、CSS的小知识点
  • 原文地址:https://www.cnblogs.com/PushyTao/p/13675766.html
Copyright © 2020-2023  润新知