题目链接:https://cn.vjudge.net/problem/HihoCoder-1634
题目意思:可以让矩阵里的某一个数变成p,或者不修改。求最大子矩阵最小,输出最小值。
思路:请看下图

代码:

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <stdlib.h>
#include <math.h>using namespace std;
typedef long long int LL;
int max(int a,int b,int c,int d)
{return max(max(a,b),max(c,d));
}
const int maxn=155;
const int INF=2e9+1e8;
int n,m,p;
int a[maxn][maxn],dp[maxn][maxn],ma[maxn][maxn],L[maxn],R[maxn],U[maxn],D[maxn];
void init()
{memset(L, 0x88, sizeof(L));memset(R, 0x88, sizeof(R));memset(U, 0x88, sizeof(U));memset(D, 0x88, sizeof(D));
}
void deal()
{int tmp;//  xiamemset(dp, 0, sizeof(dp));memset(ma, 0x88, sizeof(ma));tmp = -INF;for (int i = 1; i <= n; i++){for (int l = 1; l <= m; l++){int sum = 0;for (int r = l; r <= m; r++){sum += a[i][r];dp[l][r] += sum;ma[l][r] = max(ma[l][r], dp[l][r]);if (dp[l][r] < 0)dp[l][r] = 0;tmp = max(tmp, ma[l][r]);}}D[i] = tmp;}// zuomemset(dp, 0, sizeof(dp));memset(ma, 0x88, sizeof(ma));tmp = -INF;for (int i = m; i>0; i--){for (int l = 1; l <= n; l++){int sum = 0;for (int r = l; r <= n; r++){sum += a[r][i];dp[l][r] += sum;ma[l][r] = max(ma[l][r], dp[l][r]);if (dp[l][r] < 0)dp[l][r] = 0;tmp = max(tmp, ma[l][r]);}}L[i] = tmp;}// shangmemset(dp, 0, sizeof(dp));memset(ma, 0x88, sizeof(ma));tmp = -INF;for (int i = n; i>0; i--){for (int l = 1; l <= m; l++){int sum = 0;for (int r = l; r <= m; r++){sum += a[i][r];dp[l][r] += sum;ma[l][r] = max(ma[l][r], dp[l][r]);if (dp[l][r] < 0)dp[l][r] = 0;tmp = max(tmp, ma[l][r]);}}U[i] = tmp;}// youmemset(dp, 0, sizeof(dp));memset(ma, 0x88, sizeof(ma));tmp = -INF;for (int i = 1; i <= m; i++){for (int l = 1; l <= n; l++){int sum = 0;for (int r = l; r <= n; r++){sum += a[r][i];dp[l][r] += sum;ma[l][r] = max(ma[l][r], dp[l][r]);if (dp[l][r] < 0)dp[l][r] = 0;tmp = max(tmp, ma[l][r]);}}R[i] = tmp;}
}int main()
{while(scanf("%d%d%d",&n,&m,&p)+1){init();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++)scanf("%d",&a[i][j]);}deal();int ans=D[n];for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){int tmp=max(D[i-1],U[i+1],L[j+1],R[j-1]);tmp=max(tmp,D[n]-a[i][j]+p);ans=min(ans,tmp);}}printf("%d\n",ans);}return 0;
}/*
3 3 -10
-100 4 4
4 -10 4
4 4 1
3 3 -1
-2 -2 -2
-2 -2 -2
-2 -2 -2*/

转载于:https://www.cnblogs.com/coded-ream/p/dp.html

Puzzle Game HihoCoder - 1634相关推荐

  1. HihoCoder 1634 Puzzle Game

    题目:https://cn.vjudge.net/problem/HihoCoder-1634 题意:给你一个矩阵,可以修改其中一个值为p,让你求最大子矩阵的最小值 我们可以暴力枚举每个点是否修改 当 ...

  2. hihocoder 1634

    题意: 题意:给一个n*m的矩阵,其最大子矩阵为矩阵内所有值的和最大的一个子矩阵,现给一个值p,从矩阵中任选一个值替换为p或者不操作,问所有可能操作结果矩阵的最大子矩阵和的最小值为多少 思路:min ...

  3. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  4. 【杭电ACM】1097 A hard puzzle

    [杭电ACM]1097  A hard puzzle http://acm.hdu.edu.cn/showproblem.php?pid=1097 先用int手写了算法结果竟然wrong answer ...

  5. Eight puzzle --HOJ 11918

    1.题目类型:模拟.哈希表.BFS. 2.解题思路:(1)模拟Eigh Puzzle的变换方式,并记录在数组中 :(2)由于变换的最终结果相同,所以采用反向的BFS遍历所有情况,并记录所有情况:(3) ...

  6. hihoCoder 网络流四·最小路径覆盖

    题面带解释 hihoCoder感觉很好. 网络流的精华就是建图 #include<cstdio> #include<iostream> #include<algorith ...

  7. hihoCoder #1142 : 三分求极值

    #1142 : 三分·三分求极值 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 这一次我们就简单一点了,题目在此: 在直角坐标系中有一条抛物线y=ax^2+bx+c和一 ...

  8. hihocoder 后缀自动机专题

    一.后缀自动机基本概念的理解 1.首先后缀自动机的状态是由子串的endpos来决定的 子串的endpos是指一个子串可以在原字符串的哪些位置进行匹配, endpos构成的不同集合划分成不同的状态 关于 ...

  9. hihoCoder 1051 补提交卡(贪心,枚举)

    #1051 : 补提交卡 时间限制:2000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho给自己定了一个宏伟的目标:连续100天每天坚持在hihoCoder上提交一个程序.100天过 ...

最新文章

  1. 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  2. Docker Review - docker部署Tomcat Nginx
  3. sevlet实现下载文件功能
  4. 2018 中国服务创新大会 | 早鸟票正式开售
  5. 案例:无人测量船水库水下地形测量及库容量计算
  6. trunk口_什么是Trunk?Trunk详解
  7. JavaScript 中 substr 和 substring的区别
  8. Redis基础笔记 (二)
  9. 你所不知道的程序员,不要再尬黑了
  10. clock函数,计算程序运行时间
  11. Python 爬虫 —— 使用 pandas
  12. 经常会用到的ocr文字识别工具:Text Scanner for Mac
  13. 字体转换,woff,ttf,otf,eot,svg
  14. js word 预览_个人电子简历模板在线编辑,大学生简历模板免费下载word 文档
  15. 【Python】pydub按一定比特率、采样率压缩音频文件
  16. 通过Js来设置页面样式
  17. 安卓学习笔记5.3 按钮、图像视图与图像按钮
  18. 用于C U I应用程序:/ S U B S Y S T E M : C O N D O L E,而用于G U I :S U B S Y S T E M : W
  19. 国外计算机专业属于meng吗,【原创分享】MS与MEng项目的异同深度解析
  20. HIT 软件构造期末复习二 软件测试与测试优先的编程

热门文章

  1. Linux中使用DHCP动态分配IP以及固定IP分配实验
  2. rt-thread 使用libmodbus-rtu库
  3. python 递归
  4. GridBagLayout 以及 GridBagConstraints 用
  5. 在KVM中使用ISO镜像安装虚拟机(命令行)
  6. showModalDialog参数详细说明(转载)
  7. 阿里巴巴编码规范解读(六、七)-工程结构及设计规约
  8. 5种方法,HEIC转换JPG
  9. 白领饮食十大“夺命”恶习(转)
  10. 河南商丘虞城县计算机学校,虞城县第一中等专业学校