手机网站图片做多大淘客网站怎么做返利

张小明 2026/1/7 11:56:33
手机网站图片做多大,淘客网站怎么做返利,国外创意设计网站,安平百度做网站2025-12-15#xff1a;有向图中到达终点的最少时间。用go语言#xff0c;给出一个有向图和一个整数 n#xff0c;图中节点编号为 0 到 n-1。每条边用四元组 edges[i] [ui, vi, starti, endi] 描述#xff0c;表示从 ui 指向 vi 的这条边只有在某些时刻可用#xff1a;只有…2025-12-15有向图中到达终点的最少时间。用go语言给出一个有向图和一个整数 n图中节点编号为 0 到 n-1。每条边用四元组 edges[i] [ui, vi, starti, endi] 描述表示从 ui 指向 vi 的这条边只有在某些时刻可用只有当当前的整数时刻 t 落在区间 [starti, endi]含端点时才能沿该边移动。你在时刻 0 位于节点 0。每经过一个单位时间可以选择两种行为之一留在当前节点不动如果存在一条从当前节点出发的边并且此时刻 t 在该边允许的时间区间内则沿该有向边移动到相应的邻接节点。求到达节点 n-1 所需的最小时间以整数时刻计。如果无法到达返回 -1。1 n 100000。0 edges.length 100000。edges[i] [ui, vi, starti, endi]。0 ui, vi n - 1。ui ! vi。0 starti endi 1000000000。输入: n 4, edges [[0,1,0,3],[1,3,7,8],[0,2,1,5],[2,3,4,7]]。输出: 5。解释:最佳路径为在节点 0 等待直到时间 t 1然后走边 (0 → 2)该边在 1 到 5 的时间段内可用。你在 t 2 到达节点 2。在节点 2 等待直到时间 t 4然后走边 (2 → 3)该边在 4 到 7 的时间段内可用。你在 t 5 到达节点 3。因此到达节点 3 的最小时间是 5。题目来自力扣3604。分步骤过程描述图构建阶段代码首先将输入的四元组边edges[i] [ui, vi, starti, endi]转换为邻接表表示的图。每个节点对应一个列表存储从其出发的边信息。每条边记录目标节点to、边可用的起始时间start和结束时间end。例如对于输入示例节点0有两条边一条指向节点1时间窗口[0,3]另一条指向节点2时间窗口[1,5]。数据初始化初始化一个距离数组dis长度为节点数n所有元素初始化为极大值math.MaxInt表示初始时从节点0到各节点的最短时间未知。例外是dis[0] 0因为起点时刻为0。创建一个最小堆优先队列h用于按时间顺序处理节点。堆中存储pair结构包含当前时间d和节点编号x。初始时将起点(d0, x0)加入堆。主循环Dijkstra核心逻辑循环从堆中弹出时间最小的pair即当前最早可处理的节点。若弹出的时间d大于dis[x]说明该节点已被更优路径更新则直接跳过避免重复计算。若当前节点x是终点n-1立即返回d作为答案因此时已找到最短时间。遍历节点x的所有出边。对于每条边计算新时间移动需满足边的时间窗口约束。首先必须等待至边可用若当前时间d小于边的起始时间start则等待到start然后移动耗时1单位。因此新时间newD max(d, e.start) 1。验证时间窗口移动操作开始的时刻即newD - 1必须在边的结束时间end之前即newD - 1 e.end。否则边已失效不可用。更新距离若上述条件满足且newD小于目标节点y的当前最短时间dis[y]则更新dis[y] newD并将(newD, y)加入堆供后续处理。等待行为的隐式处理算法通过max(d, e.start)自动处理节点等待若当前时间早于边起始时间则等待至start否则立即移动。这模拟了题目中“留在当前节点不动”的选项无需显式操作。终止条件若堆为空仍未到达终点返回-1表示终点不可达。例如若所有边的时间窗口过早结束或路径不连通则会触发此情况。时间复杂度与空间复杂度时间复杂度算法基于Dijkstra的优先队列实现。每个节点最多被处理一次通过dis数组去重但每条边可能触发一次堆操作插入或更新。堆操作插入或弹出复杂度为O(log N)其中N为节点数。因此总复杂度为O((N E) log N)其中E为边数。空间复杂度主要空间消耗为邻接表存储图O(E)。距离数组disO(N)。优先队列堆最坏情况下存储O(N)个节点。总空间复杂度为O(N E)。此方案通过扩展Dijkstra算法高效结合了时间窗口约束适用于大规模图N和E可达100,000。Go完整代码如下packagemainimport(container/heapfmtmath)funcminTime(nint,edges[][]int)int{typeedgestruct{to,start,endint}g:make([][]edge,n)for_,e:rangeedges{x,y:e[0],e[1]g[x]append(g[x],edge{y,e[2],e[3]})}dis:make([]int,n)fori:rangedis{dis[i]math.MaxInt}dis[0]0h:hp{{}}forlen(h)0{p:heap.Pop(h).(pair)d:p.d x:p.xifddis[x]{continue}ifxn-1{returnd}for_,e:rangeg[x]{y:e.to newD:max(d,e.start)1ifnewD-1e.endnewDdis[y]{dis[y]newD heap.Push(h,pair{newD,y})}}}return-1}typepairstruct{d,xint}typehp[]pairfunc(h hp)Len()int{returnlen(h)}func(h hp)Less(i,jint)bool{returnh[i].dh[j].d}func(h hp)Swap(i,jint){h[i],h[j]h[j],h[i]}func(h*hp)Push(v any){*happend(*h,v.(pair))}func(h*hp)Pop()(v any){a:*h;*h,va[:len(a)-1],a[len(a)-1];return}funcmain(){n:4edges:[][]int{{0,1,0,3},{1,3,7,8},{0,2,1,5},{2,3,4,7}}result:minTime(n,edges)fmt.Println(result)}Python完整代码如下# -*-coding:utf-8-*-importheapqimportmathfromtypingimportListdefminTime(n:int,edges:List[List[int]])-int:# 构建图每个元素是 (邻接节点, start, end)graph[[]for_inrange(n)]foreinedges:x,y,start,ende graph[x].append((y,start,end))# 初始化距离数组dist[math.inf]*n dist[0]0# 优先队列存储 (距离, 节点)pq[(0,0)]# (当前时间, 节点)whilepq:d,xheapq.heappop(pq)# 如果当前距离不是最短距离跳过ifddist[x]:continue# 到达终点ifxn-1:returnint(d)# 遍历邻接边fory,start,endingraph[x]:# 计算新到达时间必须至少等到 start 时刻new_dmax(d,start)1# 检查是否在有效时间内且距离更短ifnew_d-1endandnew_ddist[y]:dist[y]new_d heapq.heappush(pq,(new_d,y))return-1# 测试用例if__name____main__:n4edges[[0,1,0,3],[1,3,7,8],[0,2,1,5],[2,3,4,7]]resultminTime(n,edges)print(result)# 输出结果C完整代码如下#includeiostream#includevector#includequeue#includeclimits#includealgorithmusingnamespacestd;structEdge{intto,start,end;Edge(intt,ints,inte):to(t),start(s),end(e){}};structNode{inttime,id;Node(intt,inti):time(t),id(i){}// 重载运算符用于最小堆booloperator(constNodeother)const{returntimeother.time;}};intminTime(intn,vectorvectorintedges){// 构建图vectorvectorEdgegraph(n);for(constautoe:edges){intxe[0],ye[1],starte[2],ende[3];graph[x].emplace_back(y,start,end);}// 初始化距离数组vectorintdist(n,INT_MAX);dist[0]0;// 优先队列最小堆priority_queueNode,vectorNode,greaterNodepq;pq.emplace(0,0);while(!pq.empty()){Node currpq.top();pq.pop();intdcurr.time;intxcurr.id;// 如果当前距离不是最短距离跳过if(ddist[x]){continue;}// 到达终点if(xn-1){returnd;}// 遍历邻接边for(constautoe:graph[x]){intye.to;intstarte.start;intende.end;// 计算新到达时间必须至少等到 start 时刻intnew_dmax(d,start)1;// 检查是否在有效时间内且距离更短if(new_d-1endnew_ddist[y]){dist[y]new_d;pq.emplace(new_d,y);}}}return-1;}intmain(){intn4;vectorvectorintedges{{0,1,0,3},{1,3,7,8},{0,2,1,5},{2,3,4,7}};intresultminTime(n,edges);coutresultendl;return0;}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

希尔顿酒店网络营销案例黑帽seo软件

手把手教你用PetaLinux开发内核模块:从零点亮FPGA上的LED你有没有遇到过这样的场景?硬件团队在Vivado里设计好了一个自定义IP,比如一个简单的LED控制器或GPIO扩展模块,现在需要在Linux系统中把它驱动起来。标准内核没有现成支持&a…

张小明 2026/1/6 19:57:12 网站建设

校园网站建设调查问卷wordpress 入门pdf

非线性系统控制方法:滑模控制与非最小相位系统跟踪 1. 不确定系统的鲁棒线性化 在处理存在不确定性的系统线性化问题时,我们考虑如下系统: [ \begin{cases} x = f(x) + \Delta f(x) + g_1(x)u_1 + \cdots + g_n(x)u_n + \Delta g_1(x)u_1 + \cdots + \Delta g_n(x)u_n …

张小明 2026/1/6 18:52:42 网站建设

常州网站建设中国互联网站建设中心建站

LocalAI技术架构深度解析:分布式推理与多模态融合新范式 【免费下载链接】LocalAI 项目地址: https://gitcode.com/gh_mirrors/loc/LocalAI 在本地AI部署领域,LocalAI通过创新的分布式推理架构和多模态能力融合,为开发者提供了全新的…

张小明 2025/12/30 16:48:40 网站建设

科技公司网站主页设计交互网站设计

SVGR安全防护终极指南:5个关键步骤构建坚不可摧的SVG处理流水线 【免费下载链接】svgr Transform SVGs into React components 🦁 项目地址: https://gitcode.com/gh_mirrors/sv/svgr SVGR作为将SVG转换为React组件的核心工具,在现代前…

张小明 2026/1/6 14:56:51 网站建设

网站开发策划个人简历新产品推广方案策划

深入理解中断处理与相关编程技巧 1. 中断处理基础 在计算机系统中,中断处理是一项至关重要的功能。通常,当按下键盘上的键时,系统会调用 INT 9,它将按键信息存储在缓冲区,然后返回当前程序。一般情况下,中断标志是启用的,因为若禁用,系统计时器可能无法正确计算时间和…

张小明 2026/1/6 4:48:47 网站建设

怎么制作一个网站首页wordpress页面响应慢前后端

IMX454多光谱相机核心优势高光谱分辨率与精准成像 采用IMX454传感器,支持窄波段多光谱数据采集,光谱分辨率达纳米级,可识别细微光谱差异。结合高灵敏度背照式技术,在弱光环境下仍能保持低噪点成像,适用于精准农业中的植…

张小明 2026/1/6 18:59:58 网站建设