bzoj1084
乍一看这题好难,根本不会;
直到看到1<=m<=2……
显然分类讨论dp,
很快想到这题的dp和poj2430相类似
m=2的时候f[i,j,k]表示到第i行用了j个矩阵结尾状态为k时最大权值和
k=0~4表示5种结尾可能的状态
转移很类似poj2430,这里就不赘述了
const inf=;
var f:array[..,..,..] of longint;
a:array[..,..] of longint;
ans,i,j,p,k,n,m:longint; function max(a,b:longint):longint;
begin
if a>b then exit(a) else exit(b);
end; begin
readln(n,m,k);
for i:= to n do
for j:= to m do
read(a[i,j]);
if m= then
begin
for i:= to k do
begin
f[,i,]:=-inf;
f[,i,]:=-inf;
end;
f[,,]:=a[,];
f[,,]:=;
for i:= to n do
begin
for j:= to k do
begin
f[i,j,]:=max(f[i-,j,],f[i-,j,]);
if j= then f[i,j,]:=-inf
else f[i,j,]:=max(max(f[i-,j,],f[i-,j-,]),f[i-,j-,])+a[i,];
end;
end;
writeln(max(f[n,k,],f[n,k,]));
end
else begin
for i:= to k do
for j:= to do
f[,i,j]:=-inf;
f[,,]:=;
f[,,]:=a[,];
f[,,]:=a[,];
f[,,]:=a[,]+a[,];
f[,,]:=a[,]+a[,];
for i:= to n do
for j:= to k do
begin
f[i,j,]:=-inf;
for p:= to do
f[i,j,]:=max(f[i,j,],f[i-,j,p]); if j= then
begin
for p:= to do
f[i,j,p]:=-inf;
continue;
end;
f[i,j,]:=f[i-,j-,];
f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]));
f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]))+a[i,]; f[i,j,]:=f[i-,j-,];
f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]));
f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
f[i,j,]:=max(f[i,j,],max(f[i-,j,],f[i-,j-,]))+a[i,]; f[i,j,]:=max(f[i-,j-,],f[i-,j,]);
for p:= to do
f[i,j,]:=max(f[i,j,],f[i-,j-,p]);
f[i,j,]:=f[i,j,]+a[i,]+a[i,]; if j< then
begin
f[i,j,]:=-inf;
continue;
end;
f[i,j,]:=f[i-,j,];
f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]));
f[i,j,]:=max(f[i,j,],f[i-,j-,]);
f[i,j,]:=max(f[i,j,],max(f[i-,j-,],f[i-,j-,]))+a[i,]+a[i,];
end;
ans:=-inf;
for i:= to do
ans:=max(ans,f[n,k,i]);
writeln(ans);
end;
end.
bzoj1084的更多相关文章
- 【BZOJ1084】最大子矩阵(动态规划)
[BZOJ1084]最大子矩阵(动态规划) 题面 题目描述 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 输入输出格式 输入格式 ...
- BZOJ1084 [SCOI2005]最大子矩阵 动态规划
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1084 题意概括 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注 ...
- [bzoj1084][SCOI2005]最大子矩阵_动态规划_伪·轮廓线dp
最大子矩阵 bzoj-1084 SCOI-2005 题目大意:给定一个n*m的矩阵,请你选出k个互不重叠的子矩阵使得它们的权值和最大. 注释:$1\le n \le 100$,$1\le m\le 2 ...
- 【bzoj1084】最大子矩阵
题意 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. \(1≤n≤100,1≤m≤2,1≤k≤10\) 分析 由于\(m\)只有两 ...
- bzoj1084: [SCOI2005]最大子矩阵
dp.状态转移方程在代码里 #include<cstdio> #include<algorithm> #include<cstring> using namespa ...
- BZOJ1084或洛谷2331 [SCOI2005]最大子矩阵
BZOJ原题链接 洛谷原题链接 注意该题的子矩阵可以是空矩阵,即可以不选,答案的下界为\(0\). 设\(f[i][j][k]\)表示前\(i\)行选择了\(j\)个子矩阵,选择的方式为\(k\)时的 ...
- 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&&洛谷2331[SCOI2005]最大子矩阵
题解: 分类讨论 当m=1的时候,很简单的dp,这里就不再复述了 当m=2的时候,设dp[i][j][k]表示有k个子矩阵,第一列有i个,第二列有j个 然后枚举一下当前子矩阵,状态转移 代码: #in ...
- bzoj1084: [SCOI2005]最大子矩阵 dp
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大.注意:选出的k个子矩阵不能相互重叠. 题解:m很小分类讨论,m==1时怎么搞都可以,m==2时,dp[i][j][k]表 ...
随机推荐
- 安装Cygwin
如果你现在正在学习C语言,而你又不希望使用微软提供的任何C语言的任何编译器,那么你应该考虑一下GCC.GCC是运行于类UNIX系统下的编译器工具集,这又引出了另一个让人头疼的问题,你没有一台现成的装有 ...
- RX学习笔记:在FreeCodeCamp的学习
FreeCodeCamp https://www.freecodecamp.com 2016-07-03 前几日在Github浏览时,偶然看到一个叫FreeCodeCamp的开源项目,进去该网站之后感 ...
- csdn博客刷点击率代码
此文为转载,亲测有效. import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; impo ...
- [C#]判断是否是合法的IP4,IP6地址
判断一个字符串如果没有端口的话,利用IPAddress.TryParse很好判断,那么有端口怎么判断呢,正则表达式?还是其他方式? 关键代码: /// <summary> /// 判断是否 ...
- PHP+Ajax 异步通讯注册验证
HTML代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- PHP的PSR-0命名标准
PSR是Proposing a Standards Recommendation(提出标准建议)的缩写,是由PHP Framework Interoperability Group(PHP通用性框架小 ...
- (转载)c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程
c++builder/delphi中透明panel及透明窗口的实现方法_delphi教程 可能大多数程序员会问:透明窗口,特别是透明Panel有什么应用价值呢?可别小看它们哦,下面我就来讲讲他们的巨大 ...
- win8.1系统下,点击一个窗口,【当前活动窗口】该窗口无法置顶
两个或多个窗口同时显示在桌面的时候,点击下一层的窗口,无法置顶显示,无论怎么点击,还是隐藏在原置顶窗口的后面,只能手动把原置顶窗口最小化后,才能看到.例如,A窗口现在置顶,B窗口在A的后面,露出来一部 ...
- Oracle分析函数之LEAD和LAG
LAG 访问结果集中当前行之前的行 LAG (value_expr [,offset] [,default])OVER ( [ partition_by_clause ] order_by_claus ...
- CODEVS 1638 修复公路
题目描述 Description A地区在地震过后,连接所有村庄的公路都造成了损坏而无法通车.政府派人修复这些公路. 给出A地区的村庄数N,和公路数M,公路是双向的.并告诉你每条公路的连着哪两个村庄, ...