分情况讨论,m=1的时候比较简单,设f[i][j]为到i选了j个矩形,前缀和转移一下就行了

m=2,设f[i][j][k]为1行前i个,2行前j个,一共选了k个,i!=j的时候各自转移同m=1,否则转移一下两行矩阵的情况

  1. #include<iostream>
  2. #include<cstdio>
  3. using namespace std;
  4. const int N=105,inf=1e9;
  5. int n,m,K,a,f[N][15],w[N][N][15],s[N],sum[N][2];
  6. int main()
  7. {
  8. scanf("%d%d%d",&n,&m,&K);
  9. if(m==1)
  10. {
  11. for(int i=1;i<=n;i++)
  12. {
  13. scanf("%d",&a);
  14. s[i]=s[i-1]+a;
  15. }
  16. for(int i=0;i<=n;i++)
  17. for(int j=1;j<=K;j++)
  18. f[i][j]=-inf;
  19. for(int i=1;i<=n;i++)
  20. for(int j=1;j<=K;j++)
  21. {
  22. f[i][j]=f[i-1][j];
  23. for(int i1=0;i1<i;i1++)
  24. f[i][j]=max(f[i][j],f[i1][j-1]+s[i]-s[i1]);
  25. }
  26. printf("%d", f[n][K]);
  27. }
  28. else
  29. {
  30. for(int i=1;i<=n;i++)
  31. for(int j=1;j<=m;j++)
  32. {
  33. scanf("%d",&a);
  34. sum[i][j]=sum[i-1][j]+a;
  35. }
  36. for(int i=0;i<=n;i++)
  37. for(int j=0;j<=n;j++)
  38. for(int k=1;k<=K;k++)
  39. w[i][j][k]=-inf;
  40. for(int i=1;i<=n;i++)
  41. for(int j=1;j<=n;j++)
  42. for(int k=1;k<=K;k++)
  43. {
  44. w[i][j][k]=max(w[i-1][j][k],w[i][j-1][k]);
  45. for(int l=0;l<i;l++)
  46. w[i][j][k]=max(w[l][j][k-1]+sum[i][1]-sum[l][1],w[i][j][k]);
  47. for(int l=0;l<j;l++)
  48. w[i][j][k]=max(w[i][l][k-1]+sum[j][2]-sum[l][2],w[i][j][k]);
  49. if(i==j)
  50. for(int l=0;l<i;l++)
  51. 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]);
  52. }
  53. printf("%d", w[n][n][K]);
  54. }
  55. return 0;
  56. }

bzoj 1084: [SCOI2005]最大子矩阵【dp】的更多相关文章

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

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

  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]最大子矩阵 - 动态规划

    传送门 题目大意: 从矩阵中取出k个互不重叠的子矩阵,求最大的和. 题目分析: 对于m=1,直接最大m子段和. 对于m=2: \(dp[i][j][k]\)表示扫描到第一列i和第2列j时选取了k个矩阵 ...

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

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

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

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

  6. BZOJ(6) 1084: [SCOI2005]最大子矩阵

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3566  Solved: 1785[Submit][Sta ...

  7. 1084: [SCOI2005]最大子矩阵

    1084: [SCOI2005]最大子矩阵 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1325  Solved: 670[Submit][Stat ...

  8. Bzoj 1088: [SCOI2005]扫雷Mine (DP)

    Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\) ...

  9. 洛谷P2331 [SCOI2005]最大子矩阵 DP

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

随机推荐

  1. 从零开始写STL—哈希表

    static const int _stl_num_primes = 28; template<typename T, typename Hash = xhash<T>> cl ...

  2. Substrings--poj1226(字符串)

    Description You are given a number of case-sensitive strings of alphabetic characters, find the larg ...

  3. MySQL查询count(*)、count(1)、count(field)的区别收集

    经过查询研究得出这个和MySQL中用什么引擎有关,比如InnoDB和MyISAM在处理这count(*).count(1).count(field)都有不同的方式,还有就是和版本都有关系,不同的版本会 ...

  4. android 自己定义水平和圆形progressbar 仅仅定义一些style就能够

    效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/diss ...

  5. mtk刷机错误汇总

    MTK常见错误解读与解决方法: 1.刷机过了红条,到了紫色条卡住.(错误代码4008) 解决方法:这种情况出现的话,大家可以把电池拿下来,然后重新安装上,进入REC后选择关机.然后重新刷. 2.驱动安 ...

  6. UICollectionView 具体解说学习

    UICollectionView 和UITableView非常像,是APPLE公司在iOS 6后推出的用于处理图片这类UITableView 布局困难的控件,和UITableView 一样,它也有自己 ...

  7. showModalDialog参数问题

    showModalDialog传递参数: 1.参数拼接放在url中,参数过长或带特殊字符时,容易出现问题. 2.参数放在showModalDialog属性里 <script type=" ...

  8. IDEA--java版本修改(jdk1.8改成jdk1.7)

    转载:https://blog.csdn.net/huyishero/article/details/61916516

  9. Linux上ln命令详细说明及软链接和硬链接的区别

    硬链接(hard link) UNIX文件系统提供了一种将不同文件链接至同一个文件的机制,我们称这种机制为链接.它可以使得单个程序对同一文件使用不同的名字.这样的好处是文件系 统只存在一个文件的副本, ...

  10. #啃underscore源码 一、root对象初始化部分

    最近由于比赛要交了,以及工作室屯了各种项目,实在忙不过来刷题,所以很久没更blog了(良心痛),现在自己的水平还是渣代码堆砌 + 简单的增删改查(悲伤) 所以痛定思痛,决定之后的任务是先补学校课堂的知 ...