bzoj 1084: [SCOI2005]最大子矩阵【dp】
分情况讨论,m=1的时候比较简单,设f[i][j]为到i选了j个矩形,前缀和转移一下就行了
m=2,设f[i][j][k]为1行前i个,2行前j个,一共选了k个,i!=j的时候各自转移同m=1,否则转移一下两行矩阵的情况
#include<iostream>
#include<cstdio>
using namespace std;
const int N=105,inf=1e9;
int n,m,K,a,f[N][15],w[N][N][15],s[N],sum[N][2];
int main()
{
    scanf("%d%d%d",&n,&m,&K);
    if(m==1)
    {
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a);
            s[i]=s[i-1]+a;
        }
        for(int i=0;i<=n;i++)
			for(int j=1;j<=K;j++)
				f[i][j]=-inf;
        for(int i=1;i<=n;i++)
			for(int j=1;j<=K;j++)
			{
				f[i][j]=f[i-1][j];
				for(int i1=0;i1<i;i1++)
					f[i][j]=max(f[i][j],f[i1][j-1]+s[i]-s[i1]);
			}
        printf("%d", f[n][K]);
    }
    else
    {
        for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
			{
				scanf("%d",&a);
				sum[i][j]=sum[i-1][j]+a;
			}
        for(int i=0;i<=n;i++)
			for(int j=0;j<=n;j++)
				for(int k=1;k<=K;k++)
					w[i][j][k]=-inf;
        for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				for(int k=1;k<=K;k++)
				{
					w[i][j][k]=max(w[i-1][j][k],w[i][j-1][k]);
					for(int l=0;l<i;l++)
						w[i][j][k]=max(w[l][j][k-1]+sum[i][1]-sum[l][1],w[i][j][k]);
					for(int l=0;l<j;l++)
						w[i][j][k]=max(w[i][l][k-1]+sum[j][2]-sum[l][2],w[i][j][k]);
					if(i==j)
						for(int l=0;l<i;l++)
							w[i][i][k]=max(w[i][i][k],w[l][l][k-1]+sum[i][1]+sum[i][2]-sum[l][1]-sum[l][2]);
				}
        printf("%d", w[n][n][K]);
    }
    return 0;
}
bzoj 1084: [SCOI2005]最大子矩阵【dp】的更多相关文章
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
		1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ... 
- [BZOJ 1084] [SCOI2005] 最大子矩阵 【DP】
		题目链接:BZOJ - 1084 题目分析 我看的是神犇BLADEVIL的题解. 1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k]; ... 
- BZOJ 1084 [SCOI2005]最大子矩阵 - 动态规划
		传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ... 
- BZOJ: 1084: [SCOI2005]最大子矩阵
		NICE 的DP 题,明白了题解真是不错. Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1228 Solved: 622[Submit][Stat ... 
- 【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 ... 
- 1084: [SCOI2005]最大子矩阵
		1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1325 Solved: 670[Submit][Stat ... 
- Bzoj 1088: [SCOI2005]扫雷Mine (DP)
		Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\) ... 
- 洛谷P2331 [SCOI2005]最大子矩阵 DP
		P2331 [SCOI2005]最大子矩阵 题意 : 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 第一行为n,m,k(1≤n≤ ... 
随机推荐
- poj3694+hdu2460 求桥+缩点+LCA/tarjan
			这个题使我更深理解了TARJAN算法,题意:无向图,每添加一条边后文桥的数量,三种解法:(按时间顺序),1,暴力,每每求桥,听说这样能过,我没过,用的hash判重,这次有俩个参数(n->10w, ... 
- ztr loves lucky numbers--hdu5676(DFS)
			http://acm.hdu.edu.cn/showproblem.php?pid=5676 题目大意: 给你一个数 让你找比这数大并且只含4和7 并且4和7的个数一样 枚举从0到10的18次方之 ... 
- 洛谷——P3119 [USACO15JAN]草鉴定Grass Cownoisseur
			P3119 [USACO15JAN]草鉴定Grass Cownoisseur 题目描述 In an effort to better manage the grazing patterns of hi ... 
- POJ 2192 【DP】
			题意: 给三个字符串,判断前两个在相对顺序不变的情况下是否可以组成第三个字符串. 思路: 先说屌丝: dp[i][j]代表1串的前i个和2串的前j个字符在3串的前i+j个字符中最多能够组合出几个字符. ... 
- Extjs.panel.Panel赋值的问题
			初学extjs,很是不爽.也是只有初学者才犯的错误,发出来以免再犯. 先创建一个panel var panel1 = Ext.create('Ext.panel.Panel', { id: 'p1', ... 
- asterisk 通道变量
			${ACCOUNTCODE}: 用户计费帐号 sip.conf 里的 account=XXXX ${ANSWEREDTIME}: 通话时长(秒) ${BLINDTRANSFER}: 通道是否为转接类型 ... 
- 高清(200万像素)多灯红外防水枪型网络摄像机 DH-IPC-HFW5200-IRA
			DH-IPC-HFW5200-IRA-0722A http://download.dahuatech.com/instruction_download.php?classOne=3907&cl ... 
- 如约而至,Java 10 正式发布!   Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势  努力的孩子运气不会太差,跌宕的人生定当更加精彩  优先队列详解(转载)
			如约而至,Java 10 正式发布! 3 月 20 日,Oracle 宣布 Java 10 正式发布. 官方已提供下载:http://www.oracle.com/technetwork/java ... 
- 答读者问(6):有关IT培训和毕业之前的迷茫等问题
			近期在微博上与一些读者朋友们交流,发现大家对自己的未来都比較的关心.有些朋友认为在大学里面没有学到什么东西,问我要不要到一些IT培训机构去"速成".另一些朋友即将毕业,不知道自己走 ... 
- ubuntu下打开eclipse·发现没有顶尖菜单项
			在安装eclipse时,打开集成开发环境后没有菜单项. 网上些人说要写个shell脚步,感觉有点麻烦,其实就是少了一个环境变量 BUNTU_MENUPROXY. 在/etc/profile 里面新建这 ... 
