动态规划 BZOJ1084 [SCOI2005]最大子矩阵
来源:互联网 发布:ae软件怎么用 编辑:程序博客网 时间:2024/06/09 18:49
1084: [SCOI2005]最大子矩阵
Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2771 Solved: 1379
[Submit][Status][Discuss]
Description
这里有一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵
不能相互重叠。
Input
第一行为n,m,k(1≤n≤100,1≤m≤2,1≤k≤10),接下来n行描述矩阵每行中的每个元素的分值(每个元素的
分值的绝对值不超过32767)。
Output
只有一行为k个子矩阵分值之和最大为多少。
Sample Input
3 2 2
1 -3
2 3
-2 3
1 -3
2 3
-2 3
Sample Output
9
HINT
Source
通读题目有时很重要,比如这个题……
发现可以根据m=1和m=2分类讨论地写,用前缀和容易想到,代码通俗易懂
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 using namespace std; 6 int n,m,k,a; 7 int sum[110][3],f[110][12],g[110][110][12]; 8 int main(){ 9 scanf("%d%d%d",&n,&m,&k);10 for(int i=1;i<=n;i++)11 for(int j=1;j<=m;j++){12 scanf("%d",&a);13 sum[i][j]=sum[i-1][j]+a; 14 }15 if(m==1){16 for(int i=1;i<=n;i++)17 for(int j=1;j<=k;j++){18 f[i][j]=f[i-1][j];19 for(int p=0;p<=i-1;p++) f[i][j]=max(f[i][j],f[p][j-1]+sum[i][1]-sum[p][1]);20 }21 printf("%d\n",f[n][k]);22 }23 else{24 for(int i=1;i<=n;i++)25 for(int j=1;j<=n;j++)26 for(int t=1;t<=k;t++){27 g[i][j][t]=max(g[i-1][j][t],g[i][j-1][t]);28 for(int p=0;p<=i-1;p++) g[i][j][t]=max(g[i][j][t],g[p][j][t-1]+sum[i][1]-sum[p][1]);29 for(int p=0;p<=j-1;p++) g[i][j][t]=max(g[i][j][t],g[i][p][t-1]+sum[j][2]-sum[p][2]);30 if(i==j)31 for(int p=0;p<=i-1;p++) g[i][j][t]=max(g[i][j][t],g[p][p][t-1]+sum[i][1]-sum[p][1]+sum[i][2]-sum[p][2]); 32 }33 printf("%d\n",g[n][n][k]);34 }35 return 0;36 }
阅读全文
0 0
- 动态规划 BZOJ1084 [SCOI2005]最大子矩阵
- 【BZOJ1084 || SCOI2005】最大子矩阵
- [BZOJ1084] [SCOI2005]最大子矩阵
- bzoj1084[SCOI2005]最大子矩阵
- bzoj1084【SCOI2005】最大子矩阵
- 【bzoj1084】[SCOI2005]最大子矩阵
- BZOJ1084: [SCOI2005]最大子矩阵
- 【bzoj1084】 [SCOI2005]最大子矩阵
- bzoj1084: [SCOI2005]最大子矩阵
- bzoj1084: [SCOI2005]最大子矩阵
- BZOJ1084 [SCOI2005]最大子矩阵
- 【BZOJ1084】最大子矩阵(动态规划)
- 【BZOJ1084】【SCOI2005】最大子矩阵 傻动规
- [BZOJ1084]SCOI2005最大子矩阵|DP
- bzoj1084: [SCOI2005]最大子矩阵-DP
- 【bzoj1084】【scoi2005】【最大子矩阵】【dp】
- 【BZOJ1084】[SCOI2005]最大子矩阵【DP】
- BZOJ1084: [SCOI2005]最大子矩阵 DP
- dfs序+线段树 BZOJ3252 攻略
- 线段树 BZOJ1858 [Scoi2010]序列操作
- 线段树 POJ2828 Buy Tickets
- spfa vijos1901 学姐的钱包
- 动态规划 BZOJ1037 [ZJOI2008]生日聚会Party
- 动态规划 BZOJ1084 [SCOI2005]最大子矩阵
- 动态规划 BZOJ1831 [AHOI2008]逆序对
- 动态规划 BZOJ3688 折线统计
- Dijkstra BZOJ2763 [JLOI2011]飞行路线
- 动态规划 BZOJ1296 [SCOI2009]粉刷匠
- 动态规划 BZOJ1710 [Usaco2007 Open]Cheappal 廉价回文
- 最小生成树 BZOJ3714 [PA2014]Kuglarz
- 最大生成树 BZOJ3943 [Usaco2015 Feb]SuperBull
- 二分图 BZOJ4554 [Tjoi2016&Heoi2016]游戏