给出 $n * 1$ 的矩阵,选出 $k$ 个互不重叠的子矩阵,使得其最大
$sum[i]$ 为列的前缀和
设 $f[i][j]$ 表示前 $i$ 个数选出 $j$ 个互不重叠的子矩阵的最大价值
若第 $i$ 个数不属于第 $j$ 个矩阵 $f[i][j] = f[i - 1][j]$
否则枚举第 $j$ 个矩阵的起点 $s$,$f[i][j] = max(f[i][j], f[s - 1][j - 1] + sum[i] - sum[s - 1])$

给出 $n * 2$ 的矩阵,选出 $k$ 个互不重叠的子矩阵,使得其最大
$sum[i][1]$ 为列 $1$ 的前缀和
$sum[i][2]$ 为列 $2$ 的前缀和
$f[i][j][use]$ 表示第 $1$ 列选到的 $i$ 行,第 $2$ 列选到了 $j$ 行,选了 $use$ 个矩阵的最大价值和
考虑枚举 $i, j, use$
第 $i$ 行第 $1$ 列不属于子矩阵或第 $j$ 行第 $2$ 列不属于子矩阵
$f[i][j][use] = std:: max(f[i - 1][j][use], f[i][j - 1][use])$
第 $i$ 行第 $1$ 列和第 $j$ 行第 $2$ 列属于不同的子矩阵
分别枚举第 $i$ 行第 $1$ 列所在子矩阵的起始点和第 $j$ 行第 $2$ 列所在子矩阵的起始点并更新答案,

$f[i][j][use] = max (f[i][j][use], max(f[h-1][j][l-1]+(sum1[i]-sum1[h-1]), 1<=h<=i))$
$f[i][j][use] = max (f[i][j][use], max(f[i][h-1][l-1]+(sum2[j]-sum2[h-1]),1<=h<=j))$

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>#define gc getchar()inline int read() {int x = 0, ff = 1;char c = gc;while(c < '0' || c > '9') {if(c == '-') ff = -1; c = gc;}while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc;return x * ff;
}const int N = 110;int f[N][N][15], sum[N][N], n, m, k, A[N][N];int main() {n = read(), m = read(), k = read();for(int i = 1; i <= n; i ++) for(int j = 1; j <= m; j ++) A[i][j] = read();if(m == 1) {for(int i = 1; i <= n; i ++) sum[i][0] = sum[i - 1][0] + A[i][1];for(int i = 1; i <= n; i ++)for(int j = 1; j <= k; j ++) {f[i][j][0] = f[i - 1][j][0];for(int s = 1; s <= i; s ++) f[i][j][0] = std:: max(f[i][j][0], f[s - 1][j - 1][0] + sum[i][0] - sum[s - 1][0]);}std:: cout << f[n][k][0];} else {for(int i = 1; i <= n; i ++) sum[i][1] = sum[i - 1][1] + A[i][1];for(int i = 1; i <= n; i ++) sum[i][2] = sum[i - 1][2] + A[i][2];for(int i = 1; i <= n; i ++)for(int j = 1; j <= n; j ++)for(int use = 1; use <= k; use ++) {f[i][j][use] = std:: max(f[i - 1][j][use], f[i][j - 1][use]);for(int s = 1; s <= i; s ++) f[i][j][use] = std:: max(f[i][j][use], f[s - 1][j][use - 1] + (sum[i][1] - sum[s - 1][1]));for(int s = 1; s <= j; s ++) f[i][j][use] = std:: max(f[i][j][use], f[i][s - 1][use - 1] + (sum[j][2] - sum[s - 1][2]));if(i == j)for(int s = 1; s <= i; s ++)f[i][j][use] = std:: max(f[i][j][use], f[s - 1][s - 1][use - 1] + (sum[i][1] - sum[s - 1][1]) + (sum[i][2] - sum[s - 1][2]));}std:: cout << f[n][n][k];}return 0;
}

转载于:https://www.cnblogs.com/shandongs1/p/9468100.html

luogu 2331相关推荐

  1. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  2. [Luogu] 选学霸

    https://www.luogu.org/problemnew/show/P2170 并查集+DP #include <iostream> #include <cstring> ...

  3. Luogu 2470 [SCOI2007]压缩

    和Luogu 4302 [SCOI2003]字符串折叠 差不多的想法,区间dp 为了计算方便,我们可以假设区间[l, r]的前面放了一个M,设$f_{i, j, 0/1}$表示区间$[i, j]$中是 ...

  4. 【Luogu】P1613 跑路

    [Luogu]P1613 跑路 一.题目 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资 ...

  5. Luogu P6055 [RC-02] GCD(莫比乌斯反演,杜教筛)(这题乐死我了,真就图一乐呗)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P6055 Prob ...

  6. Luogu P3177 [HAOI2015] 树上染色(树上背包)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P3177 [HAOI2015] 树上染色 有一棵点数为 NNN 的树,树边有边权.给你一 ...

  7. Luogu P4178 Tree (点分治 + 树状数组)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Weblink https://www.luogu.com.cn/problem/P4178 Prob ...

  8. Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理,子集反演)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Luogu P4336 [SHOI2016]黑暗前的幻想乡(容斥,矩阵树定理) Problem n≤1 ...

  9. BZOJ 2154 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演,经典好题)(Luogu P1829)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 P1829 [国家集训队]Crash的数字表格 / JZPTAB(反演,经典好题) Problem S ...

最新文章

  1. 通过案例学调优之--Oracle Cluster Table
  2. python实现数字循环相加_python使用递归、尾递归、循环三种方式实现斐波那契数列...
  3. Redis高效性探索--线程IO模型,通信协议
  4. ionic 修改组件默认样式_开源Magpie:组件库详解
  5. PTA12、 统计文字中的单词数量并按出现次数排序 (10 分)
  6. 设置linux的console为串口【转】
  7. JHelpers——一个善良忠实的仆人
  8. Netbackup 一次备份失败原因的总结
  9. 【图像处理基础】基于matlab图像SRGB+Adobe RGB伽马校正【含Matlab源码 255期】
  10. 持久化配置管理 diamond 使用简介
  11. SEO网站优化步骤超详细完整版教程
  12. 怎么压缩PPT大小?PPT太大了怎么压缩?
  13. 5800p计算机公式,卡西欧fx-5800p计算器内置公式及公式自定义在隧道测量中的应用...
  14. 海淘 亚马逊 冻结账号 怎么办?
  15. 【Xgen UE】将Xgen制作好的毛发导入UE
  16. (转)create-react-app入门教程
  17. 在Ubuntu上基于wayland/weston源码构建weston桌面
  18. Jlink在ADS下的配置说明及常见问题解决办法
  19. 作业1开发一个简单的python计算器
  20. 如何在GitHub上创建自己的仓库?

热门文章

  1. 高新技术企业,如何从研发项目中挖掘专利申请?
  2. 万字长文总结MySQL关系型数据库
  3. 计算机学院自然语言处理专业,哈尔滨工业大学计算机学院-自然语言处理-课程总结...
  4. 合并两个dataset
  5. 单向TSP问题(Uva 116)
  6. 相机芯片尺寸及选型公式
  7. dw怎么将html模板导入,DW如何创建模板?如何将网页存储为模板?
  8. h3cr4900g3安装系统_H3C案例查看:H3C UniServer R4900 G3服务器NVMe硬盘配置阵列方法以及相关操作...
  9. win10家庭版锁屏图片无法修改一直转圈圈(解决方案)
  10. 昆曲清音——南京听戏小记