传送门1
传送门2
思路:
我怎么这么煞笔啊……
有没有治疗脑残的药啊……
我一开始想的是考虑DP到第i行,已经有j个子矩阵
无果……
发现自己很纸张,然后加上0,1表示dp到左边还是右边
无果……
然后状态由0,1扩大到0,1,2表示用了左边,用了右边还是两边都用
无果……
唉……
想到了一点点两边一起DP,但已经是弃疗了

结果就是从早上七点开始想,写了2,3个DP都是60分。
后来翻题解(啪啪),瞄了一眼DP表示的状态
然后就写出来了
很显然m等于1的时候就是个普及难度O(n2)O(n^2)的k个字段和最大的DP
但是m=2时怎么办呢?
用f[i][j][l]f[i][j][l]表示有i个子矩阵,左边DP到第j行,右边DP到第k行
转移的话分别转移j,k就好,还有就是如果j=k时就可以两个一起转移
随便处理个前缀和就好
Md这题给学弟做都能A吧
复杂度O(n3k)O(n^3k)
代码:

#include<cstdio>
#include<iostream>
using namespace std;
int n,m,k;
int a[103][3],sum[3][103],f[15][103][103];
main()
{scanf("%d%d%d",&n,&m,&k);for (int i=1;i<=n;++i)for (int j=1;j<=m;++j)scanf("%d",a[i]+j);for (int i=1;i<=m;++i)for (int j=1;j<=n;++j)sum[i][j]=sum[i][j-1]+a[j][i];for (int i=1;i<=k;++i)for (int j=1;j<=n;++j)for (int l=1;l<=n;++l){f[i][j][l]=max(f[i][j][l-1],f[i][j-1][l]);for (int p=0;p<j;++p)f[i][j][l]=max(f[i][j][l],f[i-1][p][l]+sum[1][j]-sum[1][p]);for (int p=0;p<l;++p)f[i][j][l]=max(f[i][j][l],f[i-1][j][p]+sum[2][l]-sum[2][p]);if (j==l)for (int p=0;p<l;++p)f[i][j][l]=max(f[i][j][l],f[i-1][p][p]+sum[2][l]-sum[2][p]+sum[1][j]-sum[1][p]);}printf("%d",f[k][n][n]);
}

【BZOJ1084】【codevs2454】最大子矩阵,DP相关推荐

  1. bzoj1084 [SCOI2005]最大子矩阵 dp

    首先题目是要选几个连续的矩阵,有关连续类的问题是可以最优值直接在相邻两行转移的 而且题目中m<=2是非常方便的条件,分类讨论就可以了 注: 0 0也要转移 码: #include<iost ...

  2. BZOJ1084 [SCOI2005]最大子矩阵 动态规划

    欢迎访问~原文出处--博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1084 题意概括 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注 ...

  3. UVA-10074 最大子矩阵 DP

    求出大矩阵里面全为0的最大子矩阵 我自己用的个挫DP写的,感觉写的不是很好,其实可以再优化,DP想法就是以 0 0 到当前 i j 为整体矩阵考虑,当前 i j就是从 i-1 j或者 i,j-1那里最 ...

  4. BZOJ1084 SCOI2005最大子矩阵

    考虑DP f[i][j][k]表示一行到i一行到j共取k块最大值,类似于最长公共子序列n^2那种 注意相等时可以一起拿 By:大奕哥 1 #include<bits/stdc++.h> 2 ...

  5. bzoj1084: [SCOI2005]最大子矩阵

    dp.转移方程在代码里.. 转载于:https://www.cnblogs.com/invoid/p/5451202.html

  6. 2019.4.summary

    2019.4.1 BZOJ1061: [Noi2008]志愿者招募 真心有点难QAQ https://www.byvoid.com/zhs/blog/noi-2008-employee 看void爷的 ...

  7. leetcode解题思路(无代码) 归类汇总版,面试笔试经典例题

    我将舍弃没有巧妙解法的简单题.部分题干.代码实现.非关键步骤,目的是做成一篇每次面试前都能过一遍的思路问答题. 在我仅有的面试经验中,面试官似乎会按知识点提问.因此我认为归类极其重要. 简单的题不一定 ...

  8. [Tyvj Aug11] 黄金矿工

    传送门 Description 黄金矿工是一个经典的小游戏,它可以锻炼人的反应能力.该游戏中,可以通过"挖矿"获得积分并不断升级.玩家可以在线玩flash版黄金矿工,也可以下载后玩 ...

  9. 题目推荐—BZOJ 水题推荐

    [bzoj1756]Vijos1083小白逛公园 裸题- -..线段树维护lmax,rmax,max,sum然后搞之.. [Ahoi2008]Meet 紧急集合 求两两点的lca然后会发现必然有两个l ...

最新文章

  1. JDK动态代理和CGLIB代理的区别
  2. VMWare虚拟机NAT上网方法 亲测可用
  3. 用户反馈:对 Rafy 开发框架的一些个人建议
  4. Linux netfilter源码分析(5)
  5. [转载]:C#两种不同的存储过程调用方法
  6. 小程序多端框架全面测评 | 程序员硬核评测
  7. Cocos2d JS 之消灭星星(十) 关卡配置
  8. 移动端的h5遇到的一些坑记录
  9. CPAL脚本自动化测试 ———— UDP 系列函数
  10. WinAPI WinMain函数
  11. 【面试常问】Redis的持久化机制是什么?各自的优缺点?
  12. 关于C语言中,long类型的长度
  13. ORA-28547 连接服务器失败
  14. Android 九宫格布局(图片上传、预览)
  15. Learning Enriched Features for Real Image Restoration and Enhancement Paddle模型复现93号(1)
  16. Linux下qt/C++全局键盘监控,处理键盘事件,输出按键码
  17. 一些学习编程的优质网站
  18. ThinkPad X250加装固态硬盘教程
  19. java里dialect_iBatis3基于方言(Dialect)的分页
  20. crontab环境变量问题

热门文章

  1. 云下IDC和云上VPC如何高速稳定互联?——云专线接入方案
  2. 补习系列(19)-springboot JPA + PostGreSQL
  3. Hadoop伪分布式集群的安装部署
  4. 一统江湖的大前端(7)React.js-从开发者到工程师
  5. 今日拷问:侬是什么垃圾!
  6. 体脂数C语言switch,c语言switch语句
  7. Android笔记 - Android studio如何添加arr库
  8. CMD执行命令出现NOMALY: meaningless REX prefix used以及IDEA提示Cannot run git问题解决
  9. ES6_有关数组的函数_note
  10. vue用公共组件页面传值_vuejs几种不同组件(页面)间传值的方式