hihocoder 1580 Matrix(北京icpc2017网络赛)

#1580 : Matrix


时间限制:1000ms

单点时限:1000ms

内存限制:256MB

描述

Once upon a time, there was a little dog YK. One day, he went to an antique shop and was impressed by a beautiful picture. YK loved it very much.

However, YK did not have money to buy it. He begged the shopkeeper whether he could have it without spending money.

Fortunately, the shopkeeper enjoyed puzzle game. So he drew a n × m matrix on the paper with integer value ai,j in each cell. He wanted to find 4 numbers x, y, x2, and y2(x ≤ x2, y ≤ y2), so that the sum of values in the sub-matrix from (x, y) to (x2, y2) would be the largest.

To make it more interesting, the shopkeeper ordered YK to change exactly one cell's value into P, then to solve the puzzle game. (That means, YK must change one cell's value into P.)

If YK could come up with the correct answer, the shopkeeper would give the picture to YK as a prize.

YK needed your help to find the maximum sum among all possible choices.

输入

There are multiple test cases.

The first line of each case contains three integers n, m and P. (1 ≤ n, m ≤ 300, -1000 ≤ P ≤ 1000).

Then next n lines, each line contains m integers, which means ai,j (-1000 ≤ ai,j ≤ 1000).

输出

For each test, you should output the maximum sum.

样例输入
3 3 4
-100 4 4
4 -10 4
4 4 4
3 3 -1
-2 -2 -2
-2 -2 -2
-2 -2 -2
样例输出
24
-1
题意:给你一个n × m的矩阵,你必须把其中一个数变成p,然后找一个子矩阵,
子矩阵的所有数之和最大。
思路:对于一个给定的矩阵,我们要使它的和最大,那一定是把这个矩阵中最小的数改成p,所以我们需要维护一个最小值,二维的最小值很难维护,所以我们维护的是一维的。
做法和最大子区间和一样,i,j枚举的是上下边界,k枚举列。
dp[k][0]表示前k列没有改数字得到的最大矩阵和。
dp[k][1]表示前k列修改一个数字得到的最大矩阵和。
mp[k]表示的是在【i,j】区间内第k列的最小值。
dp[k][0]=max(dp[k-1][0],0)+sum[k];
dp[k][1]=max(dp[k-1][1]+sum[k],max(dp[k-1][0],0)+sum[k]-mp[k]+p);
#include<iostream>
#include<cmath>
#include<cstring> 
#include<cstdlib>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,p,ans,a[500][500],sum[500],mp[500],dp[500][2];
int main()
{    while(~scanf("%d%d%d",&n,&m,&p)){int ans=-1000000000,ms=0;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++) scanf("%d",&a[i][j]),ms+=a[i][j];for(int i=1;i<=n;i++){dp[0][0]=0;memset(sum,0,sizeof(sum));for(int j=i;j<=n;j++){for(int k=1;k<=m;k++){sum[k]+=a[j][k];if(i==j) mp[k]=a[j][k]; else mp[k]=min(mp[k],a[j][k]);dp[k][0]=max(dp[k-1][0],0)+sum[k];if(i==1&&j==n&&k==m&&dp[k][0]==ms) ; else ans=max(ans,dp[k][0]);//如果不是整个矩阵的话,可以修改矩阵外的任意一点使其达到题目要求,注意一定要是dp[k][0]==ms,保证是整个矩阵。 if(k>1) dp[k][1]=max(dp[k-1][1]+sum[k],max(dp[k-1][0],0)+sum[k]-mp[k]+p);else dp[k][1]=sum[k]-mp[k]+p;ans=max(ans,dp[k][1]);}} } printf("%d\n",ans);}
}

转载于:https://www.cnblogs.com/The-Pines-of-Star/p/9878834.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570905.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sentinel控制台无数据解决

本地开发sentinel控制台有数据显示&#xff0c; 部署至linux服务器后&#xff0c;无数据显示 可能出现的原因有如下可能&#xff1a; 1.linux系统时间 和 控制台所在的系统时间不一致导致 date看一下&#xff0c;解决系统时间问题 2.是端口防火墙问题 生产环境对防火墙端口…

Nacos版本升级1.1.3 >> 1.3.1 —>再升级至1.3.2

前段时间进行了版本升级&#xff0c;springboot &#xff0c;springcloud &#xff0c;spring cloud alibaba都进行了版本调整 当时nacos并未进行调整&#xff0c; 再测试项目运行过程中&#xff0c;nacos版本不匹配&#xff0c;导致抛出很多nacos的请求异常 并且nacos的1.1…

[BZOJ 5072]小A的树

Description 题库链接 给你 \(n\) 个节点的一棵树&#xff0c;点分黑白。 \(q\) 组询问&#xff0c;每次询问类似于“是否存在树中 \(x\) 个点的连通块恰有 \(y\) 个黑点”。 \(t\) 组数据。 \(1\leq t\leq 5,1\leq n\leq 5000,q\leq 10^5\) Solution 由于询问比较多&#xff0…

Druid的外网访问异常

本地启动访问无异常&#xff0c;部署至Linux服务器后无法访问 #合并多个DruidDataSource的监控数据use-global-data-source-stat: truestat-view-servlet:login-username: adminlogin-password: adminreset-enable: falseurl-pattern: /druid/*# 添加IP白名单allow: "&quo…

POI Excel解析

Maven 引入POI <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.13</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-…

Linux项目第一次访问非常慢,后来很快的异常

最近项目本地访问和测试服务器访问都没出现访问很慢的问题。 近期要上生产部署&#xff0c;所以对生产环境的组件及各服务进行了部署&#xff0c;部署完成后进行测试发现请求耗时异常 比如一个订单查询请求&#xff0c;第一次请求耗时5m 或者15s 而且很有规律&#xff0c;不多…

mysql order by按照汉字拼音进行排序

Mysql的处理办法是&#xff1a; SELECT * FROM user_info ORDER BY CONVERT(user_name USING GBK) ASC;

spring注解大全

【转载】https://www.cnblogs.com/zxf330301/articles/6559210.html spring component的作用 1、controller 控制器&#xff08;注入服务&#xff09; 2、service 服务&#xff08;注入dao&#xff09; 3、repository dao&#xff08;实现dao访问&#xff09; 4、component &am…

深度学习的常用框架

目 录 一、Caffe (源于Berkeley的主流CV工具包) 二、TensorFlow (Google的深度学习框架) 三、Torch (Facebook用的卷积神经网络工具包) 四、Theano 五、Keras 六、MXNet 七、其他深度学习框架 八、其他知识拓展认识 前言&#xff1a;深度学习框架是帮助使用者进行深度学习的工…

Flink1.12.0使用过程中遇到的异常

1.Record has Long.MIN_VALUE timestamp ( no timestamp marker). Is the time characteristic set to ProcessingTime, or did you forget to call DataStream.assignTimestampsAndWatermarks(...)? 解决办法&#xff1a; 时间窗口事件选择此方法&#xff0c;Time导包也需要…

多个字段条件相同进行分组并过滤拼装SQL

select posts,term,user_name,GROUP_CONCAT(put_department) put_dept from hrbp_info group by posts,term,user_name having count(*)>1

我对外键的回忆

添加外键&#xff1a;&#xff08;注意&#xff1a;constraint前面没得add&#xff0c;add是alter的时候才会有的&#xff09;CONSTRAINT stu_class_fkFOREIGN KEY(stu_id)REFERENCES stu_class(id)ON UPDATE CASCADEON DELETE CASCADE在添加外键的时候&#xff0c;必须保证外键…

记录一次@Transactional问题处理

Transactional注解标志在方法上会对这个方法全局内的sql产生事务控制 如&#xff1a; Transactional mothod(){ insert A(); select A->result ->insert B(); } 同事务下用A插入的结果对B查询插入 此时的result是获取不到的 不能在method上加事务&#xff0c;需要对A单…

一道清华期中考试题(逃)

据出题的jzh老师所说... 求和【问题描述】组合数 C(n,m)是从 n 个物品中取 m 个的方案数。C(n,m)(n!)/(m!(n-m)!)斐波那契数列 F 满足&#xff0c; F[0]F[1]1&#xff0c; n≥2 时 F[n]F[n-1]F[n-2]给出 n&#xff0c;求 C(n,0)F[0]C(n,1)F[1]…C(n,n)F[n]【输入格式】一行一个…

记录docker-Skywalking集成es7异常处理

遇到的问题&#xff1a; es7容器启动成功 skywalking的oap容器启动一直在restart 启动失败 处理过程&#xff1a; 1.docker logs oap容器ID 2.对应处理解决 PUT http://192.168.1.10:9200/_cluster/settings { “transient”: { “cluster”: { “max_shards_per_node”:1…

第七章:跨程序共享数据-探究内容提供器

运行时权限 Android 6.0 之后的系统提供了两种权限&#xff1a; 普通权限。例如&#xff1a;访问网络状态、监控开机是否完成等。这种权限会在安装 APP 时询问用户是否同意。危险权限&#xff0c;也就是说运行时权限&#xff0c;需要在程序运行时动态获取用户许可。例如&#x…

记录一次docker项目连接不上docker mysql的问题

异常如下&#xff1a; CommunicationsException: Communications link failure The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server做了个demo项目运行dockerfile打包镜像容器并运行抛出了如…

第十周补做作业

第十周课下补做作业 相关知识点的总结 Comparable接口&#xff1a;如果链表中存放的对象不是字符串数据&#xff0c;那么创建对象的类必须实现Comparable接口&#xff0c;即实现该接口中的方法int compareTo(Object b)来规定对象的大小关系。也就是让待排序对象所在的类实现Com…

hdu-5707-Combine String

题意&#xff1a;给你三个字符串&#xff0c;让你计算1 2 串和3 串是否匹配&#xff0c;就是3串可以分解为 1 2 串&#xff0c;字母顺序必须是按照1 2 串的字母前后顺序。 DP代码太深奥 看不太透&#xff0c;这个代码比较好理解一点&#xff1a; #include<stdio.h> #inc…

求1-100的所有数的和

#!/usr/bin/env python# -*- coding: utf-8 -*-# Time : 2018/5/6 0006 10:25# Author : Anthony.Waa# Site : # File : 求1-100的所有数的和.py# Software: PyCharm# demo1# 定义基数sum 0count 1# 循环开始while count < 101: sum count count 1print…