[SCOI2005]最大子矩阵 (动态规划)
题目描述
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵不能相互重叠。
输入输出格式
输入格式:
第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的分值的绝对值不超过32767)。
输出格式:
只有一行为k个子矩阵分值之和最大为多少。
输入输出样例
3 2 2
1 -3
2 3
-2 3
Solution
状态定义:
f[i][l] 表示到第 i 个点 用掉 l 个矩形的最大值.
转移方程:
for(pre 1--> i-1)
f[i][l]=max(f[i-1][l],f[pre][l-1]+sum[pre-->i]); //sum 表示pre到i的元素值的和.
于是 m=1 便有30 pts.
然后再想 m=2 , 由 m=1 拓展?
于是 定义状态 : f[ i ][ j ][ l ] 表示上面一列到了 i 下面一列到了 j 已选择 l 个矩阵的最大值.
想了想,m=2有一下几种情况:
1. 这个点我不做拓展 --> max( f[ i-1 ][ j-1 ][ l ] , f[ i-1 ][ j-1 ][ l ] ,f[ i ][ j-1 ][ l ] ) ;
2. 由上一列扩展一个小的 s*1 面积的
3. 由上一列扩展一个小的 s*1 面积的
4. 两列都作扩展 ,来一个 s*2 面积的
于是乎,这道题的 DP 也自然就出来了.
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int f1[][],f[][][];
int c[][],sum[][]; void solve()
{
for(int i=;i<=n;i++)
for(int l=;l<=k;l++)
{
f1[i][l]=f1[i-][l];
for(int j=;j<i;j++)
f1[i][l]=max(f1[j][l-]+sum[][i]-sum[][j],f1[i][l]);
}
cout<<f1[n][k];
return;
} int main()
{
cin>>n>>m>>k;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
scanf("%d",&c[j][i]),sum[j][i]=sum[j][i-]+c[j][i];
if(m==) {solve();return ;} for(int l=;l<=k;l++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
f[i][j][l]=max(f[i-][j][l],f[i][j-][l]);
for(int pre=;pre<i;pre++) f[i][j][l]=max(f[i][j][l],f[pre][j][l-]+sum[][i]-sum[][pre]);
for(int pre=;pre<j;pre++) f[i][j][l]=max(f[i][j][l],f[i][pre][l-]+sum[][j]-sum[][pre]);
if(i==j)
for(int pre=;pre<i;pre++)
f[i][j][l]=max(f[i][j][l],f[pre][pre][l-]+sum[][i]-sum[][pre]+sum[][j]-sum[][pre]);
}
cout<<f[n][n][k]; return ;
}
[SCOI2005]最大子矩阵 (动态规划)的更多相关文章
- BZOJ1084 [SCOI2005]最大子矩阵 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1084 题意概括 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注 ...
- BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划
传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
- 1084: [SCOI2005]最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1325 Solved: 670[Submit][Stat ...
- bzoj千题计划198:bzoj1084: [SCOI2005]最大子矩阵
http://www.lydsy.com/JudgeOnline/problem.php?id=1084 m=1: dp[i][j] 前i个数,选了j个矩阵的最大和 第i个不选:由dp[i-1][j] ...
- 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)
1084: [SCOI2005]最大子矩阵 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第 ...
- BZOJ(6) 1084: [SCOI2005]最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3566 Solved: 1785[Submit][Sta ...
- [Luogu 2331] [SCOI2005]最大子矩阵
[Luogu 2331] [SCOI2005]最大子矩阵 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 ...
- 洛谷P2331 [SCOI2005]最大子矩阵 DP
P2331 [SCOI2005]最大子矩阵 题意 : 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 第一行为n,m,k(1≤n≤ ...
随机推荐
- 中国区 Azure 应用程序开发说明
1.文档简介 微软公司为其在境外由微软运营的 Azure 服务(以下简称为 “境外 Azure”),创建和部署云应用程序,提供了相应工具. 在中国,由世纪互联运营的 Microsoft Azure ( ...
- jmeter中通过命令方式生成结果文件
通过命令的方式将jmeter生成的jtl结果文件生成html文件,以便更直观的分析结果数据,以下命令可以放在1个bat文件中取执行. bat文件可以放到jmeter的根目录下. 步骤1: 通过命令方式 ...
- watchguard 软件工程师内部招聘!
作为watchguard正式员工,现发布公司最近的招聘信息,待遇优厚,请符合条件的朋友和我联系并将简历发给我,我会尽早联系公司人力部门. 我的邮件:daibao91888@163.com 博客:htt ...
- Python学习日志9月17日 一周总结
周一,9月11日 这天写的是过去一周的周总结,我从中找出当天的内容. 这天早晨给电脑折腾装机,早晨基本上没有学习,休息了一个早晨. 下午写的上周总结,完事做mooc爬虫课的作业,<Think P ...
- SQLite C/C++ 教程
目录 1安装 2 C/C++ Interface APIs 3连接到数据库 4创建表 5插入操作 6更新操作 7删除操作 安装 在我们开始使用SQLite在C / C++程序,我们需要确保SQLite ...
- iOS,APP退到后台,获取推送成功的内容并且语音播报内容。
老铁,我今天忙了一下午就为解决这个问题,网上有一些方法,说了一堆关于这个挂到后台收到推送并且获得推送内容的问题,有很多人都说APP挂到后台一会就被杀死.但实际上可以有办法解决的. WechatIMG3 ...
- iOS perform action after period of inactivity (no user interaction)
代码看完后感觉非常优秀 http://stackoverflow.com/questions/8085188/ios-perform-action-after-period-of-inactivity ...
- HTML 显示和隐藏浏览器滚动条
滚动条和overflow有关 显示: overflow-x:auto; overflow-y:auto; overflow-x:scroll; overflow-y:scroll; 隐藏: overf ...
- web安全--<a>标签带有target=“_blank”
面试时遇到安全相关的一个题目 :超链接<a>标签带有target=“_blank”属性的,容易被利用进行诸如钓鱼等攻击,请问如何在书写代码时进行防范?(谷歌和火狐环境). 自己看到这道题目 ...
- Ecshop的积分商城-对不起,该商品库存不足,现在不能兑换
1. 打开Ecshop积分商城文件 "根目录/exchange.php" 发现248行与289行都有库存不足时报错的提示代码: 248行: /* 查询:检查兑换商品是否有库 ...