bzoj1084: [SCOI2005]最大子矩阵
dp。状态转移方程在代码里
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 100 + 10; int a[maxn][3];
int f[maxn][maxn][maxn];
int s[maxn],s2[maxn][3];
int n,m,k; int main() {
scanf("%d%d%d",&n,&m,&k);
if(m==1) {
for(int i=1;i<=n;i++) {
scanf("%d",&a[i][0]);
s[i]+=s[i-1]+a[i][0];
}
memset(f,0,sizeof(f));
for(int p=1;p<=k;p++)
for(int i=1;i<=n;i++) {
f[p][i][0]=f[p][i-1][0];
for(int j=0;j<i;j++)
f[p][i][0]=max(f[p][i][0],f[p-1][j][0]+s[i]-s[j]);
}
printf("%d\n",f[k][n][0]);
}
if(m==2) {
for(int i=1;i<=n;i++) {
scanf("%d%d",&a[i][1],&a[i][2]);
s2[i][1]=s2[i-1][1]+a[i][1];
s2[i][2]=s2[i-1][2]+a[i][2];
}
memset(f,0,sizeof(f));
for(int p=1;p<=k;p++)
for(int a=1;a<=n;a++)
for(int b=1;b<=n;b++) {
f[p][a][b]=max(f[p][a-1][b],f[p][a][b-1]);
for(int c=0;c<a;c++)
f[p][a][b]=max(f[p][a][b],f[p-1][c][b]+s2[a][1]-s2[c][1]);
for(int c=0;c<b;c++)
f[p][a][b]=max(f[p][a][b],f[p-1][a][c]+s2[b][2]-s2[c][2]);
if(a==b) for(int c=0;c<a;c++)
f[p][a][b]=max(f[p][a][b],f[p-1][c][c]+s2[a][1]+s2[a][2]-s2[c][1]-s2[c][2]);
}
printf("%d\n",f[k][n][n]);
}
return 0;
}
bzoj1084: [SCOI2005]最大子矩阵的更多相关文章
- [bzoj1084][SCOI2005]最大子矩阵_动态规划_伪·轮廓线dp
最大子矩阵 bzoj-1084 SCOI-2005 题目大意:给定一个n*m的矩阵,请你选出k个互不重叠的子矩阵使得它们的权值和最大. 注释:$1\le n \le 100$,$1\le m\le 2 ...
- 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] ...
- BZOJ1084 [SCOI2005]最大子矩阵 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1084 题意概括 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注 ...
- bzoj1084: [SCOI2005]最大子矩阵 dp
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表 ...
- BZOJ1084 SCOI2005最大子矩阵
考虑DP f[i][j][k]表示一行到i一行到j共取k块最大值,类似于最长公共子序列n^2那种 注意相等时可以一起拿 By:大奕哥 #include<bits/stdc++.h> usi ...
- bzoj1084 [SCOI2005]最大子矩阵——背包
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1084 水题...分类讨论一下即可. 代码如下: #include<iostream&g ...
- [bzoj1084][SCOI2005]最大子矩阵(DP)
题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1084 分析: m=1时:相当于只有一行数,让你取出p段,使得总和最大 明显可以DP,f ...
- 1084: [SCOI2005]最大子矩阵
1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1325 Solved: 670[Submit][Stat ...
- BZOJ 1084: [SCOI2005]最大子矩阵 DP
1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...
随机推荐
- 再次学习C++类之构造函数
学习C++类,首先要说C中的结构体,虽然C++类扩展了C中的结构体,可以添加成员函数,但他们是有区别的.在结构体中,成员变量.成员函数都是公有的,而类中,一般是成员变量是私有的,成员函数是公有的,私有 ...
- zxing-master core编译
1.下载 Maven: http://maven.apache.org/download.cgi 2.下载完以后,设一下系统变量:MAVE_HOME 3.Path中加入%MAVEN_HOME%\bin ...
- C#网络编程简单实现通信小例子-1
1.主界面 2.源程序 Send public partial class formUdpSend : Form { //声明一个UdpClient对象 UdpClient udpClient; pu ...
- 在树莓派上 搭建sqlite数据库
最近找工作需要学习一些数据库方面的知识,所以就在实验室的树莓派上准备装个数据库试试,刚开始准备装一个mysql数据库,出现了很多问题,放弃了,后来查了一些资料原来还有很多可以用的小巧实用的数据库,sq ...
- poj 3249 Test for Job (记忆化深搜)
http://poj.org/problem?id=3249 Test for Job Time Limit: 5000MS Memory Limit: 65536K Total Submissi ...
- CentOS安装crontab及使用方法
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于 “crontab”文件中,以供之后读取和执行.通常,crontab储 ...
- jQuery.serializeArray() 函数详解
serializeArray()函数用于序列化一组表单元素,将表单内容编码为一个JavaScript数组. serializeArray()函数常用于将表单内容序列化为JSON对象,以便于被编码为JS ...
- 10个CSS简写/优化技巧
CSS简写就是指将多行的CSS属性简写成一行,又称为CSS代码优化或CSS缩写.CSS 简写的最大好处就是能够显著减少CSS文件的大小,优化网站整体性能,更加容易阅 读. 下面介绍常见的CSS简写规则 ...
- [转载]Unity3D的断点调试功能
断点调试功能可谓是程序员必备的功能了.Unity3D支持编写js和c#脚本,但很多人可能不知道,其实Unity3D也能对程序进行断点调试的.不过这个断点调试功能只限于使用Unity3D自带的MonoD ...
- VB断点大全
MultiByteToWideChar, ANSI字符串转换成Unicode字符串WideCharToMultiByte, Unicode字符串转换成ANSI字符串 //--------------- ...