题目链接:https://cn.vjudge.net/contest/281963#problem/A

题目大意:中文题目

具体思路:观察到m<=2,所以我们可以对两种情况进行单独讨论,当m==1时,dp[i][j]表示将前i行分成j组的最大值,所以最终输出dp[n][k]就可以了。在每一次递推的时候就看一下前面的i-1行的分成j-1组的最大值+a[i]-a[L]就可以了。当m==2的时候,就把他看成单独的两列进行求解就可以了。

AC代码:

 #include<iostream>
#include<stack>
#include<cmath>
#include<stdio.h>
#include<queue>
#include<algorithm>
using namespace std;
# define ll long long
const int maxn = +;
int dp1[maxn][maxn];
int dp[maxn][maxn][maxn];
int a[maxn],b[maxn];
int main()
{
int n,m,k,t1,t2;
scanf("%d %d %d",&n,&m,&k);
if(m==)
{
for(int i=; i<=n; i++)
{
scanf("%d",&t1);
a[i]=a[i-]+t1;
}
for(int i=; i<=n; i++)
{
for(int j=; j<=k; j++)
{
dp1[i][j]=dp1[i-][j];
for(int L=; L<i; L++)
{
dp1[i][j]=max(dp1[i][j],dp1[L][j-]+a[i]-a[L]);
}
}
}
printf("%d\n",dp1[n][k]);
}
else
{
for(int i=; i<=n; i++)
{
scanf("%d %d",&t1,&t2);
a[i]=a[i-]+t1;
b[i]=b[i-]+t2;
}
for(int i=; i<=k; i++)
{
for(int i1=; i1<=n; i1++)
{
for(int j1=; j1<=n; j1++)
{
dp[i1][j1][i]=max(dp[i1-][j1][i],dp[i1][j1-][i]);
for(int L=; L<i1; L++)
{
dp[i1][j1][i]=max(dp[i1][j1][i],dp[L][j1][i-]+a[i1]-a[L]);
}
for(int L=; L<j1; L++)
{
dp[i1][j1][i]=max(dp[i1][j1][i],dp[i1][L][i-]+b[j1]-b[L]);
}
if(i1==j1)
{
for(int L=; L<i1; L++)
{
dp[i1][j1][i]=max(dp[i1][j1][i],dp[L][L][i-]+a[i1]-a[L]+b[i1]-b[L]);
}
}
}
}
}
printf("%d\n",dp[n][n][k]);
}
return ;
}

A - 最大子矩阵 HYSBZ - 1084 (DP)的更多相关文章

  1. 1084. [SCOI2005]最大子矩阵【网格DP】

    Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵 不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤ ...

  2. 【SCOI2005】 最大子矩阵 BZOJ 1084

    Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. Input 第一行为n,m,k(1≤n≤100,1≤m≤2 ...

  3. NOIP2014pj子矩阵[搜索|DP]

    题目描述 给出如下定义: 子矩阵:从一个矩阵当中选取某些行和某些列交叉位置所组成的新矩阵(保持行与列的相对顺序)被称为原矩阵的一个子矩阵. 例如,下面左图中选取第2.4行和第2.4.5列交叉位置的元素 ...

  4. 51nod 1051 最大子矩阵和(dp)

    题目链接:51nod 1051 最大子矩阵和 实质是把最大子段和扩展到二维.读题注意m,n... #include<cstdio> #include<cstring> #inc ...

  5. bzoj 1084 DP

    首先对于m==1的情况非常容易处理(其实这儿因为边界我错了好久...),直接DP就好了,设f[i][k]为这个矩阵前i个选k个矩阵的最大和,那么f[i][k]=max(f[j][k-1]+sum[j+ ...

  6. URAL 1146 Maximum Sum(最大子矩阵的和 DP)

    Maximum Sum 大意:给你一个n*n的矩阵,求最大的子矩阵的和是多少. 思路:最開始我想的是预处理矩阵,遍历子矩阵的端点,发现复杂度是O(n^4).就不知道该怎么办了.问了一下,是压缩矩阵,转 ...

  7. 51Nod--1051最大子矩阵和(DP入门)

    分析: 我们已经解决了一维的问题(基础篇中的最大子段和问题),现在变成二维了,我们看看能不能把这个问题转化为一维的问题.最后子矩阵一定是在某两行之间的.假设我们认为子矩阵在第i行和第j列之间,我们如何 ...

  8. 最大子矩阵和问题dp

    给定一个矩阵 matrix,其中矩阵中的元素可以包含正数.负数.和0,返回子矩阵的最大累加和.例如,矩阵 matrix 为: 0 -2 -7 0 9 2 -6 2 -4 1 -4 1 -1 8 0 - ...

  9. poj 1050 To the Max 最大子矩阵和 经典dp

    To the Max   Description Given a two-dimensional array of positive and negative integers, a sub-rect ...

随机推荐

  1. UI事件

    load:在window对象上触发是当页面加载完毕之后触发的,在frameset 是当所有的frames都加载完毕之后触发,当指img标签时,是指图片加载完毕之后等等. unload:在window对 ...

  2. css修改input表单默认样式重置与自定义大全

    链接地址: 伪元素表单控件默认样式重置与自定义大全 http://www.zhangxinxu.com/wordpress/?p=3381 Chrome 现在不支持通过伪元素修改 meter 元素样式 ...

  3. UOJ#192. 【UR #14】最强跳蚤

    题目链接 http://uoj.ac/problem/192 暑期课第二天 树上问题进阶 具体内容看笔记博客吧 题意 n个节点的树T 边有边权w 求满足(u, v)上所有边权乘积为完全平方数的路径有多 ...

  4. 自学Zabbix3.12.4-动作Action-Operation配置

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 3.12.4 自学Zabbix3.12.4-动作Action-Operation配置 1. 概述 ...

  5. BZOJ 4009: [HNOI2015]接水果

    4009: [HNOI2015]接水果 Time Limit: 60 Sec  Memory Limit: 512 MBSubmit: 636  Solved: 300[Submit][Status] ...

  6. BZOJ 4754 [JSOI2016]独特的树叶 | 树哈希判同构

    题目链接 这道题是一道判断无根树同构的模板题,判断同构主要的思路就是哈希. 一遇到哈希题,一百个人能有一百零一种哈希方式,这篇题解随便选用了一种--类似杨弋<Hash在信息学竞赛中的一类应用&g ...

  7. # BZOJ5300 [CQOI2018]九连环 题解 | 高精度 FFT

    今天做了传说中的CQOI六道板子题--有了一种自己很巨的错觉(雾 题面 求n连环的最少步数,n <= 1e5. 题解 首先--我不会玩九连环-- 通过找规律(其实是百度搜索)可知,\(n\)连环 ...

  8. FreeRTOS不允许在中断服务程序和临界段中执行不确定的性的操作

    举例 等待事件标志组的任务,要是在中断服务程序中设置事件标志组,但不知道当前有多少个任务在等待此事件标志,这个操作即为不确定性操作,为了不在中断服务程序中执行此不确定性操作,只在中断服务程序中给一确定 ...

  9. awk实例

    AWK-F 以XX为分割df -lh | grep boot | awk '{print $5}' | awk -F '%' '{print $1}'grep "bash" /et ...

  10. Failed to load because no supported source was found

    Uncaught (in promise) DOMException: Failed to load because no supported source was found? 等待解决: