zoukankan      html  css  js  c++  java
  • 求出矩阵中,所有元素相加和最大的分块矩阵。

     对于这个问题,我们目前有四种不同的想法。其中,有两种成熟的算法,两种比较模糊的“想法”。(杨波,崔海营)

    成熟想法一:

      有一m*n的矩阵,取其中m1*n1的分块矩阵(1<=m1<=m,1<=n1<=n)。则该分块矩阵元素个数N=m1*n1。设此分块矩阵各元素和为K,则该分块矩阵平均元素值P=K/N.那么,只要找出M类分块矩阵(M=card(A),A={X|存在X的两个因子都分别<=m和n,且1<=X<=m*n})各分类中,每类里的分块矩阵P最大的那个,然后在对这M个分块矩阵求取它们中K最大的那个,最后就能得到问题的结果。

    成熟想法二:

      任取矩阵中一个元素,对该元素进行如下操作:(0,0实在不想用数学语言描述了,费劲,画图表示如下)

      

      

    模糊想法一:

    问题中描述的分块矩阵有如下特点。设该分块矩阵a所有元素和为M,则在该分块矩阵中任取一个更小的分块矩阵设其元素和为m,则必有M-m>0;设问题中母矩阵所有元素和为P,则必有P-M<0(实际这里可以推广,行列数都分别大于等于a分块矩阵行列数的分块矩阵元素和K-M<0);然后这应该是找到问题中分块矩阵的充要条件(本人一直很忙,没有证明,哪位看客如果有时间可以证明一下0,0,不过应该是对的)。那么据此条件我们可以找到问题的解。

    模糊想法二:

      取母矩阵中元素值最大元素,以该元素为核心向其周围最大元素延伸,并有某种舍弃规则,直到这些被延伸元素的和最大且他们是母矩阵的一个分块矩阵为止(这个算法目测应该是最简单的,如果成功了的话,不过本人对这个算法想的还不够成熟啊,求指教啊有木有!!)

  • 相关阅读:
    APIO2015雅加达的摩天楼
    索引(填坑进度:0.1‰)
    树形 DP 笔记 · 一
    「已弃坑」DP 优化的各种姿势 (From CF)
    C++ 的位运算:__builtin, bitset
    LA 7158. ACM-ICPC World Finals 2015 I. Ship Traffic
    LA 7155. ACM-ICPC World Finals 2015 F. Keyboarding
    LA 7150. ACM-ICPC World Finals 2015 A. Amalgamated Artichokes
    LA 7587. ACM-ICPC World Finals 2016 L. Swap Space
    LA 7578. ACM-ICPC World Finals 2016 C. Ceiling Function
  • 原文地址:https://www.cnblogs.com/stduyangbo/p/3605222.html
Copyright © 2011-2022 走看看