洛谷P1719 最大加权矩形 (DP/二维前缀和)
题目描述也没啥好说的,就是给你个你n*n的矩形(带权),求其中最大权值的子矩阵。
首先比较好想的就是二维前缀和,n<=120,所以可以用暴力。
1 #include<bits/stdc++.h>
2 using namespace std;
3 int n,f[130][130],ans=-0x3f3f3f3f;
4 //n^4爆搜
5 int main(){
6 scanf("%d",&n);
7 for(int i=1;i<=n;i++)
8 for(int j=1;j<=n;j++){
9 int x;
10 scanf("%d",&x);
11 f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-1]+x;
12 }
13 for(int i=1;i<=n;i++)
14 for(int k1=1;k1<=i;k1++)
15 for(int j=1;j<=n;j++)
16 for(int k2=1;k2<=j;k2++){
17 int sum=f[i][j]-f[i-k1][j]-f[i][j-k2]+f[i-k1][j-k2];
18 ans=max(ans,sum);
19 }
20 cout<<ans;
21 }
当然有更优的解法,我们可以类比P1115最大子段和,把矩形从二维压缩到一维,然后DP,统计答案就行了。
1 #include<bits/stdc++.h>
2 using namespace std;
3 const int N=150;
4 int n,m,a[N][N];
5 int temp[N],dp[N],ans=-0x3f3f3f3f;
6
7 void getsum(){
8 memset(dp,0,sizeof(dp));
9 for(int i=1;i<=n;i++){//类似于求一维的最大子段和
10 dp[i]=max(dp[i],dp[i-1]+temp[i]);
11 ans=max(ans,dp[i]);
12 }
13 }
14
15 void solve(){
16 for(int i=1;i<=n;i++){//矩阵压缩
17 memset(temp,0,sizeof(temp));
18 for(int j=i;j<=n;j++){
19 for(int k=1;k<=n;k++){
20 temp[k]+=a[j][k];
21 }
22 getsum();
23 }
24 }
25 }
26
27 int main(){
28 scanf("%d",&n);
29 for(int i=1;i<=n;i++)
30 for(int j=1;j<=n;j++)
31 scanf("%d",&a[i][j]);
32 solve();
33 cout<<ans;
34 }
洛谷P1719 最大加权矩形 (DP/二维前缀和)的更多相关文章
- 洛谷 P1719 最大加权矩形
P1719 最大加权矩形 题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她 ...
- 【题解】洛谷P2822 [NOIP2016TG ]组合数问题 (二维前缀和+组合数)
洛谷P2822:https://www.luogu.org/problemnew/show/P2822 思路 由于n和m都多达2000 所以暴力肯定是会WA的 因为整个组合数是不会变的 所以我们想到存 ...
- 洛谷P1719 最大加权矩形
题目描述 为了更好的备战NOIP2013,电脑组的几个女孩子LYQ,ZSC,ZHQ认为,我们不光需要机房,我们还需要运动,于是就决定找校长申请一块电脑组的课余运动场地,听说她们都是电脑组的高手,校长没 ...
- 洛谷p1732 活蹦乱跳的香穗子 二维DP
今天不BB了,直接帖原题吧 地址>>https://www.luogu.org/problem/show?pid=1732<< 题目描述 香穗子在田野上调蘑菇!她跳啊跳,发现 ...
- 【洛谷 P2742】【模板】二维凸包
题目链接 二维凸包板子..有时间会补总结的. #include <cstdio> #include <cmath> #include <algorithm> usi ...
- 洛谷 P2216 [HAOI2007]理想的正方形 || 二维RMQ的单调队列
题目 这个题的算法核心就是求出以i,j为左上角,边长为n的矩阵中最小值和最大值.最小和最大值的求法类似. 单调队列做法: 以最小值为例: q1[i][j]表示第i行上,从j列开始的n列的最小值.$q1 ...
- 洛谷 P2038 无线网络发射器选址 —— 二维树状数组
题目:https://www.luogu.org/problemnew/show/P2038 大水题暴露出我的愚蠢. 用二维树状数组,然而居然忘了它应该那样写,调了一个小时: 正方形可以超出外面,只要 ...
- 洛谷 P1972 [SDOI2009]HH的项链-二维偏序+树状数组+读入挂(离线处理,思维,直接1~n一边插入一边查询),hahahahahahaha~
P1972 [SDOI2009]HH的项链 题目背景 无 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- 2018.08.16 洛谷P1437 [HNOI2004]敲砖块(二维dp)
传送门 看起来普通dp" role="presentation" style="position: relative;">dpdp像是有后效性的 ...
随机推荐
- C#Lambda表达式演变和Linq的深度解析
Lambda 一.Lambda的演变 Lambda的演变,从下面的类中可以看出,.Net Framwork1.0时还是用方法实例化委托的,2.0的时候出现了匿名方法,3.0的时候出现了Lambda. ...
- 1269: 求最长上升子序列(LIS)
题目描述: LIS问题(longest increasing subsequence),即:最长上升子序列问题,是动态规划中一个比较经典的问题.具体描述为:一个有n个整数的序列:A[1],A[2], ...
- 面试题:Java中为什么只有值传递?
作者:小牛呼噜噜 | https://xiaoniuhululu.com 计算机内功.JAVA底层.面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 目录 经典的问题 形参&实参 Java是 ...
- Mybatis的使用(4)
1:解决实体类成员变量和数据库表中字段名称不一致的问题: 方法1:在写sql语句时,给表中的列名起别名,名字和实体类名称一样 方法2:使用resultMap来解决: 例如:实体类中成员变量为id,na ...
- .NET CORE 读书笔记之与.NET Framework对比
.NET Framework存在的问题 它是属于系统级别安装的程序 操作系统内的所有程序共享一个.NET Framework实例,如果其中某一个应用程序需要升级Framework,其他程序也会收到影响 ...
- eclipse小技巧---快速复制全类名
选中类名,并鼠标右键选择 Copy qualified name
- 刷题记录:Codeforces Round #731 (Div. 3)
Codeforces Round #731 (Div. 3) 20210803.网址:https://codeforces.com/contest/1547. 感觉这次犯的低级错误有亿点多-- A 一 ...
- windows绕过杀软添加账户密码
windows绕过杀软添加账户密码 起因:system权限下存在杀软无法添加账户信息 绕过方法 1.C#脚本 运行后会在目标机器上创建一个用户为 wh4am1 密码为 qqai@love 的 Admi ...
- 手把手教你搭建规范的团队vue项目,包含commitlint,eslint,prettier,husky,commitizen等等
目录 1,前言 2,创建项目 2,安装vue全家桶 3,配置prettier 4,配置eslint 5,配置husky + git钩子 6,配置commitlint 6.1,配置commitlint格 ...
- Docker网络讲解 及实验redis集群部署
理解docker0 准备工作:清空所有的容器,清空所有的镜像 docker rm -f $(docker ps -a -q) # 删除所有容器 docker rmi -f $(docker image ...