BZOJ_1084_[SCOI2005]_最大子矩阵_(动态规划)
描述
http://www.lydsy.com/JudgeOnline/problem.php?id=1084
给出一个n*m的矩阵,其中m<=2,取k个子矩阵,求最大子矩阵和.
分析
1.m=1时
dp[i][k]表示在前i列里面选k个的最优解.那么对于第i列,有选和不选两种可能.则有:
dp[i][k]=max(dp[i-1][k],max{dp[x][k-1]+s1[i]-s1[x]}(0<x<i))
2.m=2时
dp[i][j][k]表示第一行前i列,第二行前j列选k个的最优解.那么可以分开考虑每一行的那一列选不选的情况,最后如果i==j,还要考虑两列一起选的情况.则有:
dp[i][j][k]=max(dp[i-1][j][k],dp[i][j-1][k],max{dp[x][j][k-1]+s1[i]-s1[x]}(0<x<i),max{dp[i][x][k-1]+s2[j]-s2[x]}(0<x<j),max{dp[x][x][k-1]+s1[i]-s1[x]+s2[j]-s2[x]}(0<x<i,0<x<j)))
#include <bits/stdc++.h>
using namespace std; const int maxn=+;
int n,m,K;
int s[][maxn];
int dp1[maxn][],dp2[maxn][maxn][];
int main(){
scanf("%d%d%d",&n,&m,&K);
for(int i=;i<=n;i++)for(int j=;j<m;j++){
int t; scanf("%d",&t);
s[j][i]=s[j][i-]+t;
}
if(m==){
for(int i=;i<=n;i++)for(int k=;k<=K;k++){
dp1[i][k]=dp1[i-][k];
for(int x=;x<i;x++) dp1[i][k]=max(dp1[i][k],dp1[x][k-]+s[][i]-s[][x]);
}
printf("%d\n",dp1[n][K]);
}
else{
for(int i=;i<=n;i++)for(int j=;j<=n;j++)for(int k=;k<=K;k++){
dp2[i][j][k]=max(dp2[i-][j][k],dp2[i][j-][k]);
for(int x=;x<i;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[x][j][k-]+s[][i]-s[][x]);
for(int x=;x<j;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[i][x][k-]+s[][j]-s[][x]);
if(i==j)for(int x=;x<i;x++) dp2[i][j][k]=max(dp2[i][j][k],dp2[x][x][k-]+s[][i]-s[][x]+s[][j]-s[][x]);
}
printf("%d\n",dp2[n][n][K]);
}
return ;
}
1084: [SCOI2005]最大子矩阵
Time Limit: 10 Sec Memory Limit: 162 MB
Submit: 2115 Solved: 1049
[Submit][Status][Discuss]
Description
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵
不能相互重叠。
Input
第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的
分值的绝对值不超过32767)。
Output
只有一行为k个子矩阵分值之和最大为多少。
Sample Input
1 -3
2 3
-2 3
Sample Output
HINT
Source
BZOJ_1084_[SCOI2005]_最大子矩阵_(动态规划)的更多相关文章
- Spring_MVC_教程_快速入门_深入分析
Spring MVC 教程,快速入门,深入分析 博客分类: SPRING Spring MVC 教程快速入门 资源下载: Spring_MVC_教程_快速入门_深入分析V1.1.pdf Spring ...
- 基于samba实现win7与linux之间共享文件_阳仔_新浪博客
基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.
- 浅谈 Underscore.js 中 _.throttle 和 _.debounce 的差异
Underscore.js是一个很精干的库,压缩后只有5.2KB.它提供了几十种函数式编程的方法,弥补了标准库的不足,大大方便了JavaScript的编程. 本文仅探讨Underscore.js的两个 ...
- CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站
CLOSE-UP FORMALWEAR_意大利进口_2015秋冬_男装发布会_西装图片系列_男装西装设计资料_WeArTrends时尚资讯网_国内最专业的服装设计资讯网站 CLOSE-UP FORMA ...
- 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线【图】_品牌资讯_服饰_太平洋时尚网
聚焦设计交易与商业落地 DANG·DHUB设计师平台上线[图]_品牌资讯_服饰_太平洋时尚网 聚焦设计交易与商业落地 DANG·DHUB设计师平台上线
- 联系我们_你我想法_【有男度】UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站
联系我们_你我想法_[有男度]UNANDU 100%进口 全球设计师品牌精汇 男装_男装搭配_时尚男装_品牌男装_男装搭配技巧_男装网站 联系我们 2012-02-17 国内北京公司总部 邮编 ...
- Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松!
Payssion,海外本地支付_海外本地收款_小语种本地支付_外贸收款_外贸网店收款_欧洲本地支付_俄罗斯本地支付_巴西支付_跨境支付_PAYSSION,让跨境支付更轻松! 首页 / 关于 ...
- 北京西服定做_衬衫定制_关于我们_Dimoon TLR.
北京西服定做_衬衫定制_关于我们_Dimoon TLR.
- MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载
MUD江湖_MUD文字游戏_MUD五指_武林群侠_北侠_夺宝江湖_书剑_文字江湖游戏_MUD游戏下载 武侠类手机文字游戏,经典再现高度自由玩法宠物 自制装备 师徒自立门派 自造武功欢迎来玩 Q群 1 ...
随机推荐
- 简化版的Flappy Bird开发过程(不使用第三方框架)
目录 .1构造世界 .2在世界中添加元素 .3碰撞检测 .4添加动画特效 .5总结 .0 开始之前 之前曾经用Html5/JavaScript/CSS实现过2048,用Cocos2d-html5/Ch ...
- 10_控制线程_线程让步yield
[线程让步yield()方法] yield()方法可以让当前正在执行的线程暂停,但它不会阻塞该线程,它只是将该线程从运行状态转入就绪状态. 只是让当前的线程暂停一下,让系统的线程调度器重新调度一次. ...
- Linux中的磁盘
Linux的磁盘管理 (很重要请注意高能预警) 硬盘:几个盘片,双面,磁性颗粒, 处理速率不同步:借助于一个中间层 文件系统(FileSystem) 可以实现对磁盘行的文件进行读写 文 ...
- mysql 删除日志
mysql日志过大,想用rm 删除掉,后来想一下,是不是有别的方法,搜索一下,果然有..... mysql > PURGE MASTER LOGS BEFORE '2014-03-16 00:0 ...
- 快速排序算法 Quick sort
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4046189.html 首先随机选择一个轴,并调整数组内各个数字,使得比轴值大的数在轴的右边, ...
- leetcode problem 33 -- Search in Rotated Sorted Array
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- 只允许输入数字的TextBox控件
[实例说明] 可以在TextBox控件中轻松地输入文本信息,输入的文本信息可以包括字母.数字.汉字等. 如果需要用户在TextBox控件中填写年龄信息,那么年龄信息应当只允许数字,怎么限制用户输入其他 ...
- java根据url获取json对象
package test; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; ...
- Python数据结构——散列表
散列表的实现常常叫做散列(hashing).散列仅支持INSERT,SEARCH和DELETE操作,都是在常数平均时间执行的.需要元素间任何排序信息的操作将不会得到有效的支持. 散列表是普通数组概念的 ...
- 常用 xwt 工具
1,显示提示信息 <FString chnName="执行单位" prompt="可以进行模糊匹配" required="false" ...