蓝桥杯 最大子阵 dp (类最大连续子段和)
来源:互联网 发布:windows影音制作xp版 编辑:程序博客网 时间:2024/05/21 09:40
题目链接
思路:
这个题我觉得还是不错的,当然我是想不到的.
我们这个题可以把它类比成一维的求最大连续子段和的问题,
也就是说对于要求的这个子矩阵,我们可以预处理出来他一列一列的和,然后我们可以O(n^2)枚举矩阵的高,比如i,j那么高为j-i+1,由于我们预处理了列的和,那么对于每一列的和可以看成一个一维的了.就转化成了求最大连续子段和.
#include<bits/stdc++.h>#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf(a) scanf("%lf", &a)#define Rs(a) scanf("%s", a)#define Pi(a) printf("%d\n", (a))#define Pf(a) printf("%lf\n", (a))#define Pl(a) printf("%lld\n", (a))#define Ps(a) printf("%s\n", (a))#define W(a) while(a--)#define CLR(a, b) memset(a, (b), sizeof(a))#define MOD 1000000007#define inf 0x3f3f3f3fusing namespace std;typedef long long ll;const int maxn=1e5+10;int sum[555][555],dp[555],b[555];int n,m,k; int main(){Ri(n),Ri(m);CLR(sum,0);for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){Ri(k);sum[i][j]=sum[i-1][j]+k;}}int ans=-inf;for(int i=1;i<=n;i++){for(int j=i;j<=n;j++){for(int w=1;w<=m;w++){b[w]=sum[j][w]-sum[i-1][w];//Pi(b[w]);}//puts("");dp[1]=b[1];ans=max(dp[1],ans);//最大子段和for(int z=2;z<=m;z++){if(dp[z-1]<0)dp[z]=b[z];elsedp[z]=dp[z-1]+b[z];ans=max(ans,dp[z]);}}}Pi(ans); return 0; }
阅读全文
0 0
- 蓝桥杯 最大子阵 dp (类最大连续子段和)
- 蓝桥杯 最大子阵(dp最大子段和)
- HDU1231 最大连续子序列【最大子段和+DP】
- DP -- 最大连续子段和
- 最大连续子段和dp
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和
- 最大连续子段和(hdu1003)
- 最大子段和【DP】
- 最大子段和 (dp)
- 求最大连续子段和 的 dp算法
- HDU 2845 最大非连续子段和 二维dp
- 求最大连续子段和 的 dp算法
- [DP]FJSDFZOJ 1386 最大连续子段和问题
- POI中设置Excel单元格格式样式(居中,字体,边框,背景色、列宽、合并单元格等)
- 公钥与私钥的理解
- Java并发编程实战--事实不可变对象
- 小布老师OracleDBA视频合集 下载
- Docker在不同平台上的安装
- 蓝桥杯 最大子阵 dp (类最大连续子段和)
- 并发编程的艺术-数据库连接池简单实现
- 大数据下Hadoop及Hbase使用中遇到的若干问题及汇总
- 10年面试2000人,张一鸣总结优秀年轻人的5大特质
- coj1090: Number Transformation bfs
- pymysql 数据库字符报错以及外网连接权限问题
- java中的工厂模式
- 校园网 win7设置代理服务器
- 关于继承BaseServlet后为什么form表单中必须加上method=“post”