当前位置: 首页 > news >正文

[CSP-J2020] 方格取数

题目

1
2

代码

#include <bits/stdc++.h>
using namespace std;
const int N=1e3+5;
int n,m,d[N][N];//方格数 
long long int fa[N][N],//从左和从上过来,找最大 fb[N][N],//从左过来和从下过来,找最大 f[N][N];//最大和 int main(){//freopen("data.cpp","r",stdin);cin>>n>>m;for(int i=1;i<=n;i++)for(int j=1;j<=m;j++)cin>>d[i][j];//每个格子的数值,可能是负值 for(int i=0;i<=n+1;i++)for(int j=0;j<=m+1;j++)fa[i][j]=fb[i][j]=f[i][j]=LLONG_MIN;//要找最大,所以不能初始为0 f[1][1]=d[1][1];//从左上出发 for(int i=2;i<=n;i++)f[i][1]=f[i-1][1]+d[i][1];//不能往左,第一列只能往下 for(int j=2;j<=m;j++){//解决剩余列 for(int i=1;i<=n;i++)fa[i][j]=max(fa[i-1][j],f[i][j-1])+d[i][j];//每列往右往下的最大 for(int i=n;i>=1;i--)fb[i][j]=max(fb[i+1][j],f[i][j-1])+d[i][j];//每列往右往上的最大 for(int i=1;i<=n;i++)f[i][j]=max(fa[i][j],fb[i][j]);//留下更大的 }cout<<f[n][m];return 0;
}

分析

  • 从左上出发往右下,可右、可上、可下,单元格数值可能是负,求最大路径和。
  • 通过定义状态数组,记录到达每个格子的最大路径和,利用子问题的最优解推导出全局最优解。
  • 状态f[i][j]每个格子的最大路径和,辅助数组fa[i][j]每个格子从左和从上过来的最大路径和,辅助数组fb[i][j]每个格子从左和从下过来的最大路径和。
  • 状态转移
  • 初始状态,f[1][1]=d[i][j]出发格子,其他都是从该格子推算。所以第一列直接求出。每个格子都可能是负数,所以找最大值不能跟0比较,要跟最小比LLONG_MIN.
  • 时间复杂度,共m列,每列三次n循环,所以是O(N*M)=106 <108
http://www.lryc.cn/news/623267.html

相关文章:

  • Vue组件生命周期钩子:深入理解组件的生命周期阶段
  • Vue 3.5+ Teleport defer 属性详解:解决组件渲染顺序问题的终极方案
  • 【P14 3-6 】OpenCV Python——视频加载、摄像头调用、视频基本信息获取(宽、高、帧率、总帧数)
  • ESP32-S3_ES8311音频输出使用
  • CSS 核心知识点全解析:从基础到实战应用
  • 探索粒子世界:从基础理论到前沿应用与未来展望
  • 主从复制+哨兵
  • 【论文阅读】Multimodal Graph Contrastive Learning for Multimedia-based Recommendation
  • List容器:特性与操作使用指南
  • 《设计模式》代理模式
  • Java 9 新特性及具体应用
  • 什么是微前端?
  • XC6SLX45T-2FGG484C Xilinx AMD Spartan-6 FPGA
  • 两个简单的设计模式的例子
  • [Linux] Linux文件系统基本管理
  • 没学过音乐怎么写歌?豆包 + 蘑兔
  • Python Condition对象wait方法使用与修复
  • 《设计模式》装饰模式
  • Tello无人机与LLM模型控制 ROS
  • 二十六、Mybatis-XML映射文件
  • 行为型设计模式:对象协作的舞蹈家(中)
  • 从0到1掌握 Spring Security(第三篇):三种认证方式,按配置一键切换
  • RH134 访问网络附加存储知识点
  • 从舒适度提升到能耗降低再到安全保障,楼宇自控作用关键
  • 19.3 Transformers量化模型极速加载指南:4倍推理加速+75%显存节省实战
  • 立体匹配中的稠密匹配和稀疏匹配
  • RK3568 NPU RKNN(二):RKNN-ToolKit2环境搭建
  • 《MySQL 数据库备份与视图创建全流程:从数据迁移到高效查询实战》
  • MySQL的下载安装(MSI和ZIP版本都有)
  • 利用Qwen大模型进行c++11并发库的学习,与时俱进!!!!