zoukankan      html  css  js  c++  java
  • 牛客第六场-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
  • 相关阅读:
    基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体基础
    用SignalR和Layui搭建自己的web聊天网站
    MySQL查看、修改字符集及Collation
    ASP.NET MVC中有四种过滤器类型
    一个简单的大转盘抽奖程序(附.NetCore Demo源码)
    网站统计中的访问信息收集的前端实现
    微信小程序实现按首字母检索城市列表
    微信小程序异步处理
    微信小程序下拉框
    node.js上传文件
  • 原文地址:https://www.cnblogs.com/PushyTao/p/13675766.html
Copyright © 2011-2022 走看看