项目编号:bzoj-1084

项目等级:Safe

项目描述:

  戳这里

特殊收容措施:

  分类讨论+DP。#滑稽

  预处理前缀和s[i][s]=Σa[j][s](∀j∈[1,i])(m=1时略去第二维)

  对于m=1,设计状态f[i][j]表示前i列中已选取j个矩形的最大分值。转移方程f[i][j]=max(f[i-1][j-1],max{f[k][j-1]+s[i]-s[k-1]})。

  对于m=2,设计状态f[i][j][k]表示第一行前i列中、第二行前j列中已选取k个矩形的最大分值。有三种转移方式:

  •传递性转移:max(f[i-1][j][k],f[i][j-1][k])->f[i][j][k]

  •单行转移:max(max{f[x][j][k-1]+s[i][0]-s[x-1][0]},max{f[i][x][k]+s[j][1]-s[x-1][1]})->f[i][j][k]

  •双行转移(前提:i=j):max{f[x][x][k-1]+s[i][0]-s[x-1][0]+s[j][1]-s[x-1][1]}->f[i][j][k]

  复杂度O(n4)。

附录:

 #include <bits/stdc++.h>
#define range(i,c,o) for(register int i=(c);i<(o);++i)
#define dange(i,c,o) for(register int i=(c);i>(o);--i)
using namespace std; //#define __debug
#ifdef __debug
#define def(t) t
#else
#define def(t) __attribute__((optimize("-O2"))) inline t
#endif // quick_io BEGIN HERE
def(int) getI()
{
char c=getchar(); int r=; short s=;
for(;!isdigit(c)&&c!='-';c=getchar());
for(;c=='-';c=getchar()) s*=-;
for(;isdigit(c);c=getchar()) r=(r<<)+(r<<)+c-'';
return s*r;
}
// quick_io END HERE static int N=getI(),M=getI(),K=getI();
int s[][],a[][],f[][][];
def(int) solve1()
{
range(i,,N+) s[i][]=s[i-][]+a[i][];
bool cur=;
range(k,,K)
{
cur^=;
range(i,,N+)
{
f[i][][cur]=f[i-][][cur];
range(j,,i) f[i][][cur]=max(
f[i][][cur],
f[j][][cur^]+s[i][]-s[j][]
);
}
}
return f[N][][cur];
}
def(int) solve2()
{
range(i,,N+) range(j,,) s[i][j]=s[i-][j]+a[i][j];
bool cur=;
range(k,,K)
{
cur^=;
range(i,,N+) range(j,,N+)
{
f[i][j][cur]=max(f[i-][j][cur],f[i][j-][cur]);
range(x,,i) f[i][j][cur]=max(
f[i][j][cur],f[x][j][cur^]+s[i][]-s[x][]
);
range(x,,j) f[i][j][cur]=max(
f[i][j][cur],f[i][x][cur^]+s[j][]-s[x][]
);
if(i==j) range(x,,i) f[i][j][cur]=max(
f[i][j][cur],
f[x][x][cur^]+s[i][]-s[x][]+s[j][]-s[x][]
);
}
}
return f[N][N][cur];
} int main()
{
range(i,,N+) range(j,,M) a[i][j]=getI();
return printf("%d\n",M&?solve1():solve2()),;
}

SCP-bzoj-1084的更多相关文章

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

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

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

    题目链接:BZOJ - 1084 题目分析 我看的是神犇BLADEVIL的题解. 1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k];   ...

  3. BZOJ 1084: [SCOI2005]最大子矩阵 DP

    1084: [SCOI2005]最大子矩阵 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n* ...

  4. BZOJ 1084 最大子矩阵

    http://www.lydsy.com/JudgeOnline/problem.php?id=1084 思路:分m=1和m=2操作 #include<algorithm> #includ ...

  5. BZOJ 1084 最大子矩阵 dp

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1084 题目大意: 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分 ...

  6. bzoj 1084 DP

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

  7. 【BZOJ 1084】 1084: [SCOI2005]最大子矩阵 (DP)

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

  8. 【BZOJ 1084】 [SCOI2005]最大子矩阵(DP)

    题链 http://www.lydsy.com/JudgeOnline/problem.php?id=1084 Description 这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩 ...

  9. BZOJ 1084 (SCOI 2005) 最大子矩阵

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 3560 Solved: 1779 [Submit][Sta ...

  10. BZOJ: 1084: [SCOI2005]最大子矩阵

    NICE 的DP 题,明白了题解真是不错. Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1228  Solved: 622[Submit][Stat ...

随机推荐

  1. 4412 搭建tftp服务器

    搭建服务器 --安装xinetd,sudo apt-get install xinetd --安装tftp和tftpd,sudo apt-get install tftp tftpd --配置/etc ...

  2. cf1278D——树的性质+并查集+线段树/DFS判环

    昨天晚上本来想认真打一场的,,结果陪女朋友去了.. 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的 ...

  3. CF 452E. Three strings(后缀数组+并查集)

    传送门 解题思路 感觉这种题都是套路之类的??首先把三个串并成一个,中间插入一些奇怪的字符,然后跑遍\(SA\).考虑按照\(height\)分组计算,就是每个\(height\)只在最高位计算一次, ...

  4. supermarket

    题目链接 题意:给你n个商品,商品的利润和商品的过期时间,商品必须在过期时间内卖才能算利润,每天只能卖一件商品,问利润最大值. 思路:用并查集+贪心的思路,先给商品从大到小排序,然后选择过期时间的根节 ...

  5. CF704E Iron Man

    CF704E Iron Man 经过不懈(抄题解)努力之后,终于AC了此题. 说起来很简单. 考虑一个链上的情况, 建立直角坐标系. 横坐标是t,纵坐标是距离链开头的距离d m个路径就是一个线段 那么 ...

  6. 第七周编程总结&&实验报告五

    实验四 类的继承 实验目的 理解抽象类与接口的使用: 了解包的作用,掌握包的设计方法 实验要求 掌握使用抽象类的方法. 掌握使用系统接口的技术和创建自定义接口的方法. 了解 Java 系统包的结构. ...

  7. 测开之路四十八:Django之重定向与cookie

    基础配置与上一篇一致 404错误 定义一个error页面 <!DOCTYPE html><html lang="en"><head> <m ...

  8. 测开之路四十五:Django之最小程序

    安装Django库 Django最小程序 import sysfrom django.conf.urls import urlfrom django.conf import settingsfrom ...

  9. [题解]Yet Another Subarray Problem-DP 、思维(codeforces 1197D)

    题目链接:https://codeforces.com/problemset/problem/1197/D 题意: 给你一个序列,求一个子序列 a[l]~a[r] 使得该子序列的 sum(l,r)-k ...

  10. Python Challenge 关卡目录及解答过程

    第0关:http://www.pythonchallenge.com/pc/def/0.html 线索:试着改变URL的地址-->把图片中得到的数字输入到URL中 2**38 输出: 第1关:h ...