zoukankan      html  css  js  c++  java
  • Wannafly挑战赛19

    Wannafly挑战赛19


    矩阵

    • 矩阵 M 包含 R 行 C 列,第 i 行第 j 列的值为 M(i,j)。
      请寻找一个子矩阵,使得这个子矩阵的和最大,且满足以下三个条件:
      子矩阵的行数不能超过 X 行。
      子矩阵的列数不能超过 Y 列。
      子矩阵中 0 的个数不能超过 Z 个。
      请输出满足以上条件的最大子矩阵和。

    • 去掉所有的条件后,可以发现是一个淳朴的二维矩阵求最大子矩阵。可以通过一维最大连续子数组的方式去解决它。
      现在首先考虑第二个限制,就是限制了一维数组的个数。
      现在,问题就转化为一维数组中,寻找连续的一段,保证0的出现次数的约束和数组长度的约束。
      0出现的次数的前缀和与数组的长度都是单调递增的。所以可以通过单调队列的方式解决。

    • 可以推广一下,如果在此时的一维数组中,需要约束的条件是单调的,也就是说,如果对于此位来说(队首元素不满足条件,需要出队),那么对于后面的位,后面的元素,也是不满足条件的。这样,就能满足单调性。
  • 相关阅读:
    【转载】Java嵌入Pig编程
    【转载】Pig语法进阶
    【转载】各种SQL在PIG中实现
    机器学习简易入门(三)
    机器学习简易入门(一)
    在Centos7上安装漏洞扫描软件Nessus
    R简易入门(二)
    R简易入门(一)
    Mysql主从同步(复制)
    Mysql备份与恢复
  • 原文地址:https://www.cnblogs.com/nowheretrix/p/9307810.html
Copyright © 2011-2022 走看看