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

DP_ural_Metro

因为是图论专题,所以最初想到的是最短路,但是图怎么存?图的最短路需要保存可以经过的点(n*m个点10^6),肯定爆了,不可能只保存交叉点。果断放弃。

考虑用DP

设当前在(i+1,j+1)表示到达这个点的最短距离。可以到达这里的点有三个。
则(i+1,j+1)=min( (i+1,j)+1,(i,j+1)+1,(i,j)+sqrt(2) )   ->   如果有交叉线。
初始状态是矩阵左边 和下边的边界,即(0,i)=(i,0)=i

思考

假设从行开始遍历,再求出到达该行的每一列的距离,则这里当i+1行求出来后,i就没用了.
所以每次只需要维护到达所有列的最短距离就可以了。

完整代码 : https://github.com/Iytz/algorithm/blob/master/graph/dp_1C.cpp

核心部分:

    for (int r=1; r<=m; ++r) {
        double NOupdate = d[0];
        d[0] += 1.0; 
        for (int c=1; c<=n; ++c){
            double save = d[c];
            if(has[r][c]) d[c]=NOupdate+sqrt(2);
            else d[c]=min(d[c-1],d[c])+1;
            NOupdate = save;
        }
    }

 

转载于:https://www.cnblogs.com/tinyork/p/4752754.html

相关文章:

  • 手把手教你整合 SpringMvc+Spring+MyBatis+Maven
  • oracle根据pid查询出正在执行的执行语句
  • 国内最简单的短视频SDK
  • 【转】vxworks的default boot line说明
  • vector的reserve和resize(转)
  • 心跳多少寿命长
  • UI中的界面之间的值传递 一
  • [POJ3067]Japan
  • 将数据集导出到Excel
  • 标准输出重定向覆盖与追加
  • [中国寒龙反网络病毒联盟001]谷歌应用引擎视频(Google.Datastore.And.RSS)
  • Arduino中hex文件的保存及应用(转)
  • java.io.IOException: Malformed \uxxxx encoding.
  • 【ASP.NET MVC】个人复习整理
  • 迷宫问题(bfs的应用)
  • ----------
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • 2017前端实习生面试总结
  • angular组件开发
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript 基础知识 - 入门篇(一)
  • Javascript编码规范
  • Java应用性能调优
  • mysql_config not found
  • Protobuf3语言指南
  • Swift 中的尾递归和蹦床
  • 给Prometheus造假数据的方法
  • 你对linux中grep命令知道多少?
  • 7行Python代码的人脸识别
  • 第二十章:异步和文件I/O.(二十三)
  • ​2020 年大前端技术趋势解读
  • (python)数据结构---字典
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (转载)深入super,看Python如何解决钻石继承难题
  • /3GB和/USERVA开关
  • @RequestBody与@ResponseBody的使用
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [20161101]rman备份与数据文件变化7.txt
  • [8-23]知识梳理:文件系统、Bash基础特性、目录管理、文件管理、文本查看编辑处理...
  • [AIGC] 使用Curl进行网络请求的常见用法
  • [C++]四种方式求解最大子序列求和问题
  • [EMWIN]FRAMEWIN 与 WINDOW 的使用注意
  • [ffmpeg] x264 配置参数解析
  • [iOS]GCD(一)
  • [JavaWeb]——获取请求参数的方式(全面!!!)
  • [jQuery]10 Things I Learned from the jQuery Source
  • [JS入门到进阶] 7条关于 async await 的使用口诀,新学 async await?背10遍,以后要考!快收藏
  • [JS入门到进阶] 前端开发不能写undefined?这是误区!
  • [MySQL]基础的增删改查
  • [MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择
  • [NLP] 使用Llama.cpp和LangChain在CPU上使用大模型