zoukankan      html  css  js  c++  java
  • 1018 Public Bike Management -PAT甲级真题(Dijkstra+DFS+fill()函数的用法)

    (不满足最优子问题,所以不能直接用Dijkstra求解)

    最优子问题a到b的结果可由a到c+c到b的结果合并得到

    细节:vector 数组可以整体赋值哦!

    fill()函数二维数组起始地址edge[0]而不是edge,头文件algorithm

    题目大意:每个自行车车站的最大容量为一个偶数cmax,如果一个车站里面自行车的数量恰好为cmax / 2,那么称处于完美状态。如果一个车站容量是满的或者空的,控制中心(处于结点0处)就会携带或者从路上收集一定数量的自行车前往该车站,一路上会让所有的车站沿途都达到完美。现在给出cmax,车站的数量n,问题车站sp,m条边,还有距离,求最短路径。如果最短路径有多个,求能带的最少的自行车数目的那条。如果还是有很多条不同的路,那么就找一个从车站带回的自行车数目最少的(带回的时候是不调整的)~

    分析:Dijkstra + DFS。如果只有Dijkstra是不可以的,因为minNeed和minBack在路径上的传递不满足最优子结构,不是简单的相加的过程,只有在所有路径都确定了之后才能区选择最小的need和最小的back~
    Dijkstra求最短路径,dfs求minNeed和minBack和path,dfs的时候模拟一遍需要调整的过程,求出最后得到的need和back,与minNeed和minBack比较然后根据情况更新path,最后输出minNeed path 和 minBack,记得path是从最后一个结点一直到第一个结点的,所以要倒着输出~

  • 相关阅读:
    浅谈T-SQL中的特殊联结
    浅谈T-SQL中的联接查询
    对AccessViolationException的一些总结
    浅谈JavaScript中的定时器
    浅谈跨域
    浅谈JavaScript中的Ajax
    浅谈JavaScript中的能力检测
    c# webConfig中的session超时详细设置
    c# session总结
    重启sql server服务两种方式
  • 原文地址:https://www.cnblogs.com/zxzmnh/p/11628551.html
Copyright © 2011-2022 走看看