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

10000ip网站怎么做网站首页 模板

10000ip网站怎么做,网站首页 模板,腰椎间盘突出压迫神经腿疼怎么治,wordpress 连接微信1. Floyd算法 作用:用于求解多源最短路,可以求解出任意两点的最短路 利用动态规划只需三重循环即可(动态规划可以把问题求解分为多个阶段)定义dp[k][i][j]表示点i到点j的路径(除去起点终点)中最大编号不超…

1. Floyd算法

  • 作用:用于求解多源最短路,可以求解出任意两点的最短路

  • 利用动态规划只需三重循环即可(动态规划可以把问题求解分为多个阶段)
  • 定义dp[k][i][j]表示点i到点j的路径(除去起点终点)中最大编号不超过k的情况下,点i到点j的最短距离。
  • 当加入第k个点作为i到j的中间点:dp[k]][i][j] = min(dp[k - 1]][i][j]], dp[k - 1][i][k] + dp[k - 1][k][j])

发现可以使用滚动数组优化第一维度:

dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])

枚举所有k,判断是否可以作为中间点,可以作为中间点则优化最短路。

初始化:如果<i, j>无边,则dp[i][j] = INF, 有边则等于边权;dp[i][i] = 0(自己到自己是不用走的)

为了理解更深刻,简单举个例子:

各点之间的关系用邻接矩阵保存(下图中又两个邻接矩阵,一个是两点之间的最短距离,还有一个是两点之间的最短路中经过的节点。)

更新

每次基于之前能找到的最短路径,如果比它短就更新。

以2号节点作为中转站是基于1号节点作为中转站的,经过n轮递推就可以得到最终答案(任意两点的最短路)

例题:

蓝桥1121

为什么先遍历k,之后遍历i,j?

因为要符合顺序,遍历完中间点后, 就要遍历邻接矩阵,进行最短距离的更新。

import os
import sys# 请在此输入您的代码
n, m, q = map(int, input().split())
INF = 10 ** 18
# dp[i][j]表示i到j的最短路
dp = [[INF] * (n + 1) for i in range(n + 1)] # 初始值设较大值
for i in range(1, n + 1):dp[i][i] = 0 # 自己到自己的距离为0
for _ in range(m):u, v, w = map(int, input().split())dp[u][v] = dp[v][u] = min(dp[u][v], w) # 双向边/无向边(可能有重边)# Floyd算法模板
# dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])
for k in range(1, n + 1):for i in range(1, n + 1):for j in range(1, n + 1):dp[i][j] = min(dp[i][j], dp[i][k] + dp[k][j])for _ in range(q):u, v = map(int, input().split())if dp[u][v] == INF:print(-1)else:print(dp[u][v])

蓝桥8336

import os
import sys# 请在此输入您的代码
"""
翻译题意:有n个城市,m条边就是有m条路径可以流通,每个城市有自己的商品产出,可以拿去别的地方销售,
需要求出最大利润,但是商品产量ai是不变的,生产成本pi也是不变的,只有售卖单价会随着商品运输到其他
城市会改变,以及带来的运输费用(这里的运输费用有一个路径的问题,需要用最短路算出来最少支付。
"""n, m = map(int, input().split())
# g = s - p - f(路径费用)
INF = 10 ** 17
a, p, s = [0] * (n + 1), [0] * (n + 1), [0] * (n + 1) # 商品的产量, 生产成本, 售卖单价
f = [[INF] * (n + 1) for i in range(n + 1)] # 记录最短路(也就是最短的运输费用)
g = [[0] * (n + 1) for i in range(n + 1)] # 记录利润
for i in range(1, n + 1):a[i], p[i], s[i] = map(int, input().split())
for _ in range(1, m + 1):u, v, w = map(int, input().split())f[u][v] = f[v][u] = min(f[u][v], w)
for i in range(1, n + 1):f[i][i] = 0for k in range(1, n + 1):for i in range(1, n + 1):for j in range(1, n + 1):f[i][j] = min(f[i][k] + f[k][j], f[i][j])
# g[i][j]表示城市1的物品运输到城市j可得的利润=城市j的售价-城市i的成本-运输f[i][j]
for i in range(1, n + 1):for j in range(1, n + 1):g[i][j] = s[j] - p[i] - f[i][j]
ans = 0
for i in range(1, n + 1):# 遍历每个城市的商品now_ans = 0# 遍历移动到的城市(包括自己本身)for j in range(1, n + 1):now_ans = max(now_ans, a[i] * g[i][j])ans += now_ans # 记录每个城市的利润print(ans)

总结下解题步骤:

  1. 初始化邻接矩阵(有边直接连接的直接存,没有的存INF最大值,自己到自己的路径长度为0)
  2. 遍历(k,i,j)更新i到j的最短路,通过k
  3. 依据题意更新答案

2. Dijkstra算法

作用:处理非负权边单源最短路问题

利用贪心+动态规划思想,实现从源点s出发到所有点的最短距离

核心思想:从起点出发,每次选择距离最短的点进行”松弛”操作

算法步骤:

1.将起点入队列,d数组表示从起点s出发到达每个最短距离

2.不断取出队列中距离最小的点u,进行“松弛”:

对于从u到v,权重为w的边

dp[v] = min(dp[v], dp[u] + w)

正在更新中...

http://www.15wanjia.com/news/189224.html

相关文章:

  • 电子商务网站开发问题研究建设网站需要准备什么资料
  • 农业网站建设模板【邯郸网络推广公司|邯郸网络营销公司】
  • 如何套用别人网站模板网络建设文章网站
  • 广东企业网站seo报价wap网站 什么意思
  • 网站建设方案公司做公司 网站建设价格
  • dedecms 百度网站地图公司管理系统下载
  • 中国网站建设公司排行榜google关键词搜索工具
  • 精美大气的餐饮类企业网站建设商城购物网站
  • 手机网站缩放辽宁建设工程信息网专家名单
  • 可以做网站素材的服装网站开发有哪些新技术
  • 做网站的接私活犯法吗做pc网站会连带手机版
  • 网站建设与管理的就业方向贵州网站建设哪家好
  • 网站备案在哪查我想做亚马逊网站怎么做
  • 网站注册域名查询吉安网站建设jxthw
  • wordpress搜索页面模板廊坊百度快照优化
  • 成都建设网站公司男人最好用的浏览器
  • 公司网站建站哪个系统好用网站制作2019趋势
  • 企业自适应网站制作跳蚤市场网站开发背景
  • 网站域名空间5个G的多少钱北京网络科技公司名单
  • 寻花问柳专注做男人喜爱的网站厦门物流网站建设
  • 网站的收费系统怎么做设计师如何做自己的个人网站
  • 上海企业网站改版电影网站模板html
  • 佛山网站推广公司注册网站需要什么条件
  • 哪个网站建设好网站建设需要哪些技术
  • 可以免费建立网站吗nas wordpress建站
  • 门户网站微信服务号建设上海微网站制作建设
  • 厚街手机网站制作中国免费最好用建站cms
  • 一个网站的建设需要什么东西巴中市城乡和住房建设局网站
  • 做app布局参考哪个网站阿里云短信wordpress
  • 文化书院网站建设方案网站建设问题及对策