【题目链接】

ybt 2007:【20CSPJ普及组】方格取数
洛谷 P7074 [CSP-J2020] 方格取数

【题目考点】

1. 坐标型动规

【解题思路】

  • 确定状态:a[i][j]为从起点走到i,j位置时整数和的最大值
  • 确定状态转移方程:
    • 熊从左上角出发,在第一列范围内只能向下走,可以求出第一列的状态。
    • 从第一列某位置向右走到了第二列,不考虑走到第三列,在这一列中只能一直向上或下一个方向运动,因为不能重复经过已经走过的方格。
      设一维数组u,d,
      u[i]表示到第j列后只向上走,得到的i,j位置的状态a[i][j],
      d[i]表示到第j列后只向下走,得到的i,j位置的状态a[i][j]。

      • 如果只考虑向上走,那么一个位置可能是从左侧或下侧走来的,取其中值更大的状态,u[i] = max(u[i+1], a[i][j-1])
      • 如果只考虑向下走,那么一个位置可能是从左侧或上侧走来的,取其中值更大的状态,d[i] = max(d[i-1], a[i][j-1])
      • 而后比较u[i]与d[i],取其中较大的值,作为a[i][j]。

【注意数据范围】:最大方格数有103⋅103=10610^3\cdot10^3 = 10^6103⋅103=106个,每个格子最大值为10410^4104,求出总和可能达到101010^{10}1010,超出了int型表示的范围,因而要用long long类型。

【题解代码】

解法1:

#include<bits/stdc++.h>
using namespace std;
#define N 1005
long long mp[N][N], a[N][N], u[N], d[N];
int main()
{int n, m;cin>>n>>m;for(int i = 1; i <= n; ++i)for(int j = 1; j <= m; ++j)cin>>mp[i][j];a[1][1] = mp[1][1];for(int i = 2; i <= n; ++i)//求第一列的状态a[i][1] = a[i-1][1] + mp[i][1];for(int j = 2; j <= m; ++j)//遍历剩下各列{u[n] = a[n][j-1] + mp[n][j];生成u数组,从下向上走,如果是最下面一行,只能从左走来。for(int i = n - 1; i >= 1; --i)u[i] = max(u[i+1], a[i][j-1]) + mp[i][j];//不是最下面一行,可能从左或下方来。d[1] = a[1][j-1] + mp[1][j];//生成d数组,从上向下走,如果是最上面一行,只能从左走来for(int i = 2; i <= n; ++i)d[i] = max(d[i-1], a[i][j-1]) + mp[i][j];//不是最上面一行,可能从左或上方来。for(int i = 1; i <= n; ++i)//生成a[i][j]a[i][j] = max(u[i], d[i]);}cout<<a[n][m];return 0;
}

信息学奥赛一本通 2007:【20CSPJ普及组】方格取数 | 洛谷 P7074相关推荐

  1. 信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖

    [题目链接] ybt 2005:[20CSPJ普及组]直播获奖 洛谷 P7072 [CSP-J2020] 直播获奖 [题目考点] 计数排序(桶排序) 其核心为:设计数数组c,c[i]表示数字i出现的个 ...

  2. 信息学奥赛一本通 1919:【02NOIP普及组】选数 | 洛谷 P1036 [NOIP2002 普及组] 选数

    [题目链接] ybt 1919:[02NOIP普及组]选数 洛谷 P1036 [NOIP2002 普及组] 选数 [题目考点] 1.排列组合 2.深搜(子集树) 3.质数 [解题思路] 深搜(子集树) ...

  3. 信息学奥赛一本通 1314:【例3.6】过河卒(Noip2002) | 1921:【02NOIP普及组】过河卒 | 洛谷 P1002 [NOIP2002 普及组] 过河卒

    [题目链接] ybt 1314:[例3.6]过河卒(Noip2002) ybt 1921:[02NOIP普及组]过河卒 洛谷 P1002 [NOIP2002 普及组] 过河卒 [题目考点] 1. 坐标 ...

  4. 信息学奥赛一本通 1967:【14NOIP普及组】螺旋矩阵 | 洛谷 P2239 [NOIP2014 普及组] 螺旋矩阵

    [题目链接] ybt 1967:[14NOIP普及组]螺旋矩阵 洛谷 P2239 [NOIP2014 普及组] 螺旋矩阵 类似考题: 洛谷 P1014 [NOIP1999 普及组] Cantor 表 ...

  5. 信息学奥赛一本通 1985:【19CSPJ普及组】加工零件 | 洛谷 P5663 [CSP-J2019] 加工零件

    [题目链接] ybt 1985:[19CSPJ普及组]加工零件 洛谷 P5663 [CSP-J2019] 加工零件 [题目考点] 图论 SPFA算法 [解题思路] 1. 问题分析 每个工人是一个顶点, ...

  6. 信息学奥赛一本通 1981:【18NOIP普及组】对称二叉树 | 洛谷 P5018【NOIP2018 普及组】 对称二叉树

    [题目链接] ybt 1981:[18NOIP普及组]对称二叉树 洛谷 P5018[NOIP2018 普及组] 对称二叉树 [题目考点] 二叉树 [解题思路] 先求出二叉树中各子树的结点数 遍历二叉树 ...

  7. 信息学奥赛一本通 1978:【18NOIP普及组】标题统计 | 洛谷 P5015 [NOIP2018 普及组] 标题统计

    [题目链接] ybt 1978:[18NOIP普及组]标题统计 洛谷 P5015 [NOIP2018 普及组] 标题统计 [题目考点] 1. 字符串 读入带空格的字符串 将带空格的字符串读入字符数组 ...

  8. 信息学奥赛一本通 1365:FBI树(fbi) | 1928:【04NOIP普及组】FBI树 | 洛谷 P1087 [NOIP2004 普及组] FBI 树

    [题目链接] ybt 1365:FBI树(fbi) ybt 1928:[04NOIP普及组]FBI树 洛谷 P1087 [NOIP2004 普及组] FBI 树 [题目考点] 1. 二叉树 [解题思路 ...

  9. 信息学奥赛一本通 1415:【17NOIP普及组】图书管理员 | 洛谷 P3955 [NOIP2017 普及组] 图书管理员

    [题目链接] ybt 1415:[17NOIP普及组]图书管理员 洛谷 P3955 [NOIP2017 普及组] 图书管理员 [题目考点] 1. 枚举 2. 二分 [解题思路] 解法1:枚举 对于每个 ...

最新文章

  1. usaco Snail Trails
  2. 基于逆向最大化词表中文分词法zz
  3. hdu6380(2018 “百度之星”程序设计大赛 - 初赛(B))
  4. swagger配置分组
  5. Winddows 10 安装 COCO API(pycocotools)
  6. python输入数据爬取_python根据用户需求输入想爬取的内容及页数爬取图片方法详解...
  7. 数学建模学习笔记(一)——层次分析模型
  8. 【数据结构与算法】顺序表V3.0的Java实现
  9. ASP.NET 数据访问类
  10. Attempt to do update or delete on table educator.t_item_info that does not use an AcidOutputFormat o
  11. python 释放内存_python深入之python内存管理机制(重点)
  12. 基于stm32和富斯遥控器的SBUS波形分析和通讯实现
  13. 小米手机连接MAC电脑
  14. 15款超好用的短链接在线生成器(新浪t.cn、腾讯url.cn)
  15. 单片机c语言延迟子程序,单片机通用延时子程序
  16. Mac设置Office的语言问题
  17. JS-写一个函数,返回参数的平方和
  18. html定义var,html的var标签是什么?关于var标签的定义和用法详解
  19. 2022.10.21 单词背诵
  20. vue调用lodop打印

热门文章

  1. VHDL基础 学习笔记
  2. 是时候好好去学门脚本语言了
  3. C# 4.0 的 Visual Studio 2010 官方示例
  4. 面试了8家公司,他们问了我这些机器学习题目……
  5. 低欲望社会有多可怕?仅94万!日本去年新生人口数创历史新低,空房子如瘟疫般蔓延...
  6. 两个运放制作加法器_同相加法器电路图_反相加法器电路图_运放加法器电路图解析...
  7. python 登录接口_使用python编写一个登录接口
  8. 看完这篇Redis缓存三大问题,够你和面试官battle几回合了
  9. 手把手教你逼走员工的23种套路,大写的服!
  10. /bin/bash: jar: command not found(