P2295 MICE 网格中的DP
题目描述


分析
很好的一道网格中的\(DP\)题
我们设\(f[x][y]\)为小象到达坐标为\((x,y)\)的点时看到的最少的老鼠的数量
但是这样定义是不好转移的,因为小象可能从上面的格子转移下来,也可能从上面的格子转移过来
所以我们用三维数组记录状态,我们设\(f[x][y][0]\)为当前格子从正上方的格子转移过来所看到的最少的老鼠的数量
\(f[x][y][1]\)为当前格子从正左方的格子转移过来所看到的最少的老鼠的数量
我们来分情况讨论一下
无非是考虑当前的位置和当前上下左右的\(4\)个格子,去一下重
1、当前格子从正上方转移过来,当前格子正上方的格子也由正上方的格子转移过来
此时当前格子的价值\(a[i][j]\)已经在\(f[i-1][j][0]\)中计算过
而当前格子正上方的格子的价值\(a[i-1][j]\)已经在\(f[i-2][j][0]\)或\(f[i-2][j][1]\)中计算过
\]
2、当前格子从正上方转移过来,当前格子正上方的格子由正左方的格子转移过来
此时当前格子的价值\(a[i][j]\)已经在\(f[i-1][j][1]\)中计算过
当前格子正左方格子的价值\(a[i][j-1]\)已经在\(f[i-1][j-1][1]\)或\(f[i-1][j-1][0]\)中计算过
当前格子正上方格子的价值\(a[i-1][j]\)也已经在\(f[i-1][j-1][1]\)或\(f[i-1][j-1][0]\)中计算过
\]
3、当前格子从正左方转移过来,当前格子正左方的格子也由正左方的格子转移过来
此时当前格子的价值\(a[i][j]\)已经在\(f[i][j-1][1]\)中计算过
当前格子正左方格子的价值\(a[i][j-1]\)已经在\(f[i][j-2][1]\)或\(f[i][j-2][0]\)中计算过
\]
4、当前格子从正左方转移过来,当前格子正左方的格子由正上方的格子转移过来
此时当前格子的价值\(a[i][j]\)已经在\(f[i][j-1][0]\)中计算过
当前格子正左方格子的价值\(a[i][j-1]\)已经在\(f[i-1][j-1][1]\)或\(f[i-1][j-1][0]\)中计算过
当前格子正上方格子的价值\(a[i-1][j]\)也已经在\(f[i-1][j-1][1]\)或\(f[i-1][j-1][0]\)中计算过
\]
要注意初始化
\]
代码
#include<bits/stdc++.h>
using namespace std;
const int maxn=1055;
int a[maxn][maxn],f[maxn][maxn][3];
int main(){
memset(f,0x3f,sizeof(f));
int n,m;
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
}
f[1][1][0]=f[1][1][1]=a[1][1]+a[1][2]+a[2][1];
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
f[i][j][0]=min(f[i][j][0],f[i-1][j][0]+a[i][j-1]+a[i][j+1]+a[i+1][j]);
f[i][j][0]=min(f[i][j][0],f[i-1][j][1]+a[i][j+1]+a[i+1][j]);
f[i][j][1]=min(f[i][j][1],f[i][j-1][1]+a[i-1][j]+a[i][j+1]+a[i+1][j]);
f[i][j][1]=min(f[i][j][1],f[i][j-1][0]+a[i][j+1]+a[i+1][j]);
}
}
printf("%d\n",min(f[n][m][0],f[n][m][1]));
return 0;
}
P2295 MICE 网格中的DP的更多相关文章
- VMware 设备VMnet0 上的网桥暂时关闭。此虚拟机无法与主机或网格中的其他计算机通信【转】
今天克隆了一个win7的虚拟机,移动到我的本地.打开时发现虚拟机网格连接图标出现X断开连接,于是网上收了一堆答案无一个可用的,决定自己解决这个问题,解决过程如下: 1.报错图如下:设备VMnet0 上 ...
- csuoj 1117: 网格中的三角形
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1117 1117: 网格中的三角形 Time Limit: 3 Sec Memory Limit: ...
- 【转】Android中dip(dp)与px之间单位转换
Android中dip(dp)与px之间单位转换 dp这个单位可能对web开发的人比较陌生,因为一般都是使用px(像素)但是,现在在开始android应用和游戏后,基本上都转换成用dp作用为单位了,因 ...
- Android中dip, dp, px,pt, sp之间的区别:
Android中dip.dp.sp.pt和px的区别 1.概述 过去,程序员通常以像素为单位设计计算机用户界面.例如:图片大小为80×32像素.这样处理的问题在于,如果在一个每英寸点数(dpi)更 ...
- 网格中的BFS,逆向(POJ2049)
题目链接:http://poj.org/problem?id=2049 解题报告: 网格中的BFS,最主要的是边界问题. 1.这里在左右,上下两个方向上,分别判断墙,和门,细节是,向上有t个墙,for ...
- 搜索(BFS)---计算在网格中从原点到特定点的最短路径长度
计算在网格中从原点到特定点的最短路径长度 [[1,1,0,1], [1,0,1,0], [1,1,1,1], [1,0,1,1]] 题目描述: 1表示可以经过某个地方,求解从(0,0)位置到(tr,t ...
- sigma网格中水平压力梯度误差及其修正
1.水平梯度误差产生 sigma坐标系下,笛卡尔坐标内水平梯度项对应形式为 \[\begin{equation} \left. \frac{\partial }{\partial x} \right| ...
- Istio(十一):向istio服务网格中引入虚拟机
目录 一.模块概览 二.系统环境 三.虚拟机负载 3.1 虚拟机负载 3.2 单网络架构 3.3 多网络架构 3.4 Istio 中如何表示虚拟机工作负载? 四.实战:向istio Mesh中引入虚拟 ...
- Android系统中的dp和px的转换
android系统中DP和SP的转化:1.首先分析TypedValue.java 可以调用以下代码获得dp的值 TypedValue.applyDimension(TypedValue.COMPLEX ...
随机推荐
- 「MoreThanJava」Java发展史及起航新世界
「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...
- filebeat v6.3 多行合并的步骤 多个表达式同时匹配
配置文件位于/etc/filebeat/filebeat.yml,就是filebeat的主配置文件打开文件filebeat.yml,搜索multiline:,默认是注释的,常用的有如下三个配置: mu ...
- 关于UDP的检验和计算(附代码)
关于UDP的检验和计算(附代码) 在下午的学习过程中https://www.cnblogs.com/roccoshi/p/13032356.html 有一张图讲述了UDP的校验方法, 如下: 老师只粗 ...
- MyBatis 实体类属性与表字段不一致
原文链接:https://blog.csdn.net/zx48822821/java/article/details/79050735 因为数据库一般设置为表的字段不区分大小写,所以数据库中表的字段通 ...
- 02.DRF-认识RESTful
认识RESTful 在前后端分离的应用模式里,后端API接口如何定义? 例如对于后端数据库中保存了商品的信息,前端可能需要对商品数据进行增删改查,那相应的每个操作后端都需要提供一个API接口: POS ...
- cb52a_c++_STL_堆排序算法make_push_pop_sort_heap
cb52a_c++_STL_堆排序算法make_push_pop_sort_heapheapsort堆排序算法make_heap()-特殊的二叉树,每一个节点都比根小,根就是最大的数.大根堆,也可以做 ...
- 能被 K 整除的最大连续子串长度
[来源]网上流传的2017美团秋招笔试题 [问题描述] 两个测试样例输出都是5 [算法思路] 暴力解法时间会超限,使用一种很巧妙的数学方法.用在读取数组arr时用数组sum记录其前 i 项的和,即 s ...
- oracle 索引失效原因_汇总
1) 没有查询条件,或者查询条件没有建立索引 2) 在查询条件上没有使用引导列 3) 查询的数量是大表的大部分,应该是30%以上. 4) 索引本身失效 5) 查询条件使用函数在索引列上,或者对索引列进 ...
- netty--helloword程序
1.使用netty需要使用到下面的java包 netty-all-5.0.0.Alpha2.jar 我们来看下面具体的代码 1. 创建一个ServerBootstrap实例 2. 创建一个EventL ...
- 入门大数据---Flume的搭建
一.下载并解压到指定目录 崇尚授人以渔的思想,我说给大家怎么下载就行了,就不直接放连接了,大家可以直接输入官网地址 http://flume.apache.org ,一般在官网的上方或者左边都会有Do ...