信息学奥赛一本通 1287:最低通行费 | OpenJudge NOI 2.6 7614:最低通行费
【题目链接】
ybt 1287:最低通行费
OpenJudge NOI 2.6 7614:最低通行费
【题目考点】
1. 动态规划:坐标型动规
【解题思路】
解法1:坐标型动规
限定商人必须在2N-1个单位时间穿越出去,那么该人每次只能向右或向下走。
记a[i][j]
为(i,j)位置需要缴纳的费用。
1. 状态定义
集合:从左上角到右下角的路径
限制:路径终点位置(i,j)
属性:缴纳费用
条件:最少
统计量:缴纳费用
状态定义:dp[i][j]
:从左上角(1,1)到(i,j)位置的所有路径中,缴纳费用最少的路径的缴纳费用。
初始状态:dp[1][1]
:(1,1)到(1,1)需要缴纳的费用,为a[i][j]
。
2. 状态转移方程
集合:从左上角(1,1)到(i,j)位置的所有路径
分割集合:根据如何到达(i,j)位置来分割集合
- 如果i=1i=1i=1,那么到达(i,j)的前一个位置只能是(i,j-1),到达(i,j)的费用为从(1,1)到(i,j-1)的费用加上(i,j)位置的费用,即
dp[i][j] = dp[i][j-1]+a[i][j]
- 如果j=1j=1j=1,那么到达(i,j)的前一个位置只能是(i-1,j),到达(i,j)的费用为从(1,1)到(i-1,j)的费用加上(i,j)位置的费用,即
dp[i][j] = dp[i-1][j]+a[i][j]
- 如果i>1i>1i>1且j>1j>1j>1,那么到达(i,j)的前一个位置只能是(i-1,j)或(i, j-1)
- 如果前一个位置是(i-1,j),到达(i,j)的费用为
dp[i-1][j]+a[i][j]
- 如果前一个位置是(i,j-1),到达(i,j)的费用为
dp[i][j-1]+a[i][j]
- 以上两种情况取费用较小的情况,即
dp[i][j] = min(dp[i-1][j], dp[i][j-1])+a[i][j]
- 如果前一个位置是(i-1,j),到达(i,j)的费用为
【题解代码】
解法1:坐标型动规
#include <bits/stdc++.h>
using namespace std;
#define N 105
int main()
{int n, dp[N][N], a[N][N];cin >> n;for(int i = 1; i <= n; ++i)for(int j = 1; j <= n; ++j)cin >> a[i][j];for(int i = 1; i <= n; ++i)for(int j = 1; j <= n; ++j){if(i == 1 && j == 1)dp[i][j] = a[i][j];else if(i == 1)dp[i][j] = dp[i][j-1] + a[i][j];else if(j == 1)dp[i][j] = dp[i-1][j] + a[i][j];elsedp[i][j] = min(dp[i-1][j], dp[i][j-1]) + a[i][j];}cout << dp[n][n];return 0;
}
信息学奥赛一本通 1287:最低通行费 | OpenJudge NOI 2.6 7614:最低通行费相关推荐
- 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶
[题目链接] ybt 1190:上台阶 OpenJudge NOI 2.3 3525:上台阶 注:ybt 1190最大数据数量为71,而OpenJudge 2.3 3525中最大数据数量为100.如果 ...
- 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛
[题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...
- 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题
[题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...
- 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818
[题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...
- 信息学奥赛一本通 1115:直方图 | OpenJudge NOI 1.9 09
[题目链接] ybt 1115:直方图 OpenJudge NOI 1.9 09:直方图 [题目考点] 1. 散列存储 也叫哈希存储.其思想为:将要存储的值通过某种算法映射到存储地址,映射算法为散列函 ...
- 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08
[题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...
- 信息学奥赛一本通 1109:开关灯 | OpenJudge NOI 1.5 31:开关灯
[题目链接] ybt 1109:开关灯 OpenJudge NOI 1.5 31:开关灯 [题目考点] 1. 模拟 2. 循环.数组 3. 用逗号分隔输出 设标志位:isFirst,表示现在输出的是否 ...
- 信息学奥赛一本通 1073:救援 | OpenJudge NOI 1.5 19:救援
[题目链接] ybt 1073:救援 OpenJudge NOI 1.5 19:救援 [题目考点] 1. 直角坐标系下某点到原点的距离 点(x,y)(x,y)(x,y)到原点的距离d=x2+y2d = ...
- 信息学奥赛一本通 1070:人口增长 | OpenJudge NOI 1.5 14:人口增长问题
[题目链接] ybt 1070:人口增长 OpenJudge NOI 1.5 14:人口增长问题 [题目考点] 1. 循环求幂 设变量r初始值为1:int r = 1; 循环n次每次循环中输入变量a, ...
最新文章
- 又是加拿大!连年拒签NeurIPS参会者被指太荒唐,Hinton亲自过问也没辙
- 开源路由器爱好者迎来利好 Linksys不变
- python方法查看_关于查看python的trace的方法
- grafana mysql插件_grafana插件动态数据
- ORB-SLAM2 地图加载2
- python ip代理池维护_python3编写网络爬虫18-代理池的维护
- 10分钟入门HTML
- 对于长沙互联网发展,一个外来两年Java程序员的所见所感所愿
- 【入门】求三个数的平均数
- 【测试】对网易邮箱登录的测试流程
- Dataframe两个表格合并
- CSS calc()函数
- 怎么去学习绘画格子裙?该怎么画格子裙?
- Windows 系统重装 - Mac 制作 Win10 启动盘
- springMVC中拦截器执行时机和执行顺序分析
- cfa三级真题和mock_cfa mock和真题哪个难(cfa mock和真题差别)
- kafka高性能的原因
- 设计一个对银行账户余额操作的简单程序(Java)
- 简单爬取链家上广州的租房信息
- mac上传文件到CentOS云服务器