[SCOI2005][BZOJ 1084]最大子矩阵
发布日期:2021-08-24 18:36:09 浏览次数:28 分类:技术文章

本文共 2297 字,大约阅读时间需要 7 分钟。

Description

  这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵

不能相互重叠。

Input

  第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的

分值的绝对值不超过32767)。

Output

  只有一行为k个子矩阵分值之和最大为多少。

题解:
  看了半天,突然发现,m小于等于2啊。
  然后就乱dp一波,除了转移写起来很麻之外,就没什么了。
  令f[i][j][k]表示当前第i行,以选中j个矩阵,当前行的取法为k的得分数,(取法只有5种啦)。
代码:
#include
using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=(x<<3)+(x<<1)+ch-'0';ch=getchar();} return x*f;}#define MN 105#define inf 0x7fint n,m,k,a[MN][3],ans;int f[MN][15][6];void rw(int &x,int y){
if(y>x)x=y;}int main(){ n=read(),m=read(),k=read(); register int i,j; for(i=1;i<=n;i++)for(j=1;j<=m;j++) a[i][j]=read(); if(m==1){ for(i=1;i<=n;i++) for(j=1;j<=k;j++){ rw(f[i][j][0],f[i-1][j][0]); rw(f[i][j][0],f[i-1][j][1]); rw(f[i][j][1],f[i-1][j][1]+a[i][1]); rw(f[i][j][1],f[i-1][j-1][0]+a[i][1]); } printf("%d\n",max(f[n][k][1],f[n][k][0])); } else{ memset(f,-inf,sizeof f); for(i=0;i<=n;i++)for(j=0;j<=k;j++) f[i][j][1]=0; for(i=1;i<=n;i++)for(j=1;j<=k;j++){ for(int h=1;h<=5;h++) rw(f[i][j][1],f[i-1][j][h]); f[i][j][2]=max(f[i-1][j][2],f[i-1][j][5])+a[i][1]; f[i][j][3]=max(f[i-1][j][3],f[i-1][j][5])+a[i][2]; rw(f[i][j][2],f[i-1][j-1][4]+a[i][1]); rw(f[i][j][3],f[i-1][j-1][4]+a[i][2]); rw(f[i][j][2],max(f[i-1][j-1][1],f[i-1][j-1][3])+a[i][1]); rw(f[i][j][3],max(f[i-1][j-1][1],f[i-1][j-1][2])+a[i][2]); f[i][j][4]=max(f[i-1][j-1][1],f[i-1][j][4])+a[i][1]+a[i][2]; rw(f[i][j][4],max(f[i-1][j-1][2],f[i-1][j-1][3])+a[i][1]+a[i][2]); rw(f[i][j][4],f[i-1][j-1][5]+a[i][1]+a[i][2]); f[i][j][5]=f[i-1][j][5]+a[i][1]+a[i][2]; rw(f[i][j][5],max(f[i-1][j-1][2],f[i-1][j-1][3])+a[i][1]+a[i][2]); if(j>=2) rw(f[i][j][5],max(f[i-1][j-2][1],f[i-1][j-2][4])+a[i][1]+a[i][2]); } ans=-1e12; for(i=1;i<=5;i++) rw(ans,f[n][k][i]); printf("%d\n",ans); } return 0;}

来自PaperCloud的博客,未经允许,请勿转载,TKS!

转载于:https://www.cnblogs.com/PaperCloud/p/9040483.html

转载地址:https://blog.csdn.net/weixin_33831196/article/details/93277744 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:IOS 学习笔记 2015-03-24 OC-API-不可变字符串
下一篇:管理表空间和数据文件——建立表空间——建立字典管理表空间和建立加密表空间...

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月01日 17时10分48秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

Excel表格身份证号显示不完整问题 2019-04-26
今日份实操——(HTML+CSS)浮动布局练习 2019-04-26
ESLint Parsing error: control-character-in-input-stream vue/no-parsing-error 2019-04-26
2011年下半年信息系统项目管理师上午试卷试题及参考答案,考试真题 2019-04-26
2011年下半年信息系统项目管理师考试下午案例分析试题及参考答案,考试真题 2019-04-26
2019年上半年信息系统项目管理师考试真题及答案(包含综合知识,案例分析,论文真题) 2019-04-26
理财启蒙必读书籍《小钱狗狗》心得 2019-04-26
《巴比伦最富有的人》精髓:学会储蓄、谨慎投资,从而走上致富之路 2019-04-26
《经济学通识》:人类会受到“东西不够、生命有限、相互依赖、需要协调”四方面的限制,影响我们的衣食住行 2019-04-26
《不可不知的经济真相》精髓:普通老百姓如何进行楼市和股市的投资 2019-04-26
《中国债券市场》精髓:中国债券市场由政府主导,其最重要的目的是为国家建设筹集资金 2019-04-26
《极简GDP史》精髓:GDP虽有诸多局限性,但是对于社会经济发展仍然有举足轻重的作用 2019-04-26
《经济学是什么》精髓:如何用经济学家的眼光理解个人选择和市场经济? 2019-04-26
《卧底经济学》书中精髓:我们如何正确理解“稀缺”这件事儿? 2019-04-26
《学会花钱》书中精髓:花钱如何掌握分寸,以及如何避开花钱误区 2019-04-26
《定投十年财务自由》书中精髓:我们如何通过定投获得更高的收益? 2019-04-26
《海龟交易法则》精髓:制定对自己有利的交易规则,在风险可控的前提下,当机会出现,你要坚定不移的机械性执行交易 2019-04-26
《彼得·林奇教你理财》书中精髓:如何开始投资,以及我们到底该投资什么? 2019-04-26
《货币简史》书中的精髓:货币产生的起源是什么?货币又是如何发展起来的? 2019-04-26
《摩根财团》精髓:摩根财团与时俱进,在不同时代扮演不同角色,始终走在时代的前列 2019-04-26