ICode9

精准搜索请尝试: 精确搜索
  • 743. 网络延迟时间(dijkstral算法)2022-05-03 02:02:36

    743. 网络延迟时间 有 n 个网络节点,标记为 1 到 n。 给你一个列表 times,表示信号经过 有向 边的传递时间。 times[i] = (ui, vi, wi),其中 ui 是源节点,vi 是目标节点, wi 是一个信号从源节点传递到目标节点的时间。 现在,从某个节点 K 发出一个信号。需要多久才能

  • 数据结构-Dijskra(迪杰斯特拉)最短路径算法2022-05-02 15:33:05

    题目链接:https://www.dotcpp.com/oj/problem1708.html 今天打算打一下午的最短路,刷上十道题最短路就算完结了,开刷 其实这道题挺迷的,这个题最大的坑点就是不能双向存图,我也不知道为什么不能存双边,但是存了双边就过不了,先不探究了,先刷题; 然后就是常规的djkstra了; Talk is cheap. Sho

  • [题解] 51 nod 1340 地铁环线2022-05-02 12:34:25

    不难看出这是一道差分约束的题目。 但是如果想按照通常的题目那样去建边的话,就会发现这句话——相邻两站的距离至少是1公里——建边后就直接让整个题出现了负环(默认是按求最短路建边),没法做了。 这时我们就需要使用断环为链的技巧。 可以设\(len\)为地铁环线总长 那么就需要把\(a

  • 迪杰斯特拉(dijkstra)2022-05-01 16:34:19

    邻接矩阵写法: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int inf=0x3f3f3f3f; 4 const int maxn=1e5+10; 5 int vis[maxn],dist[maxn]; 6 int n,m,a,b; 7 struct node 8 { 9 int dis,to; 10 bool operator<(const node x) const 11

  • 贝尔曼福特(bellman_ford)2022-05-01 16:31:06

    核心:两层循环: 问:为什么要循环n-1次 答:有n个点,若求a到b的最短路径,至多经过n-1个点(不能是回路) 贝尔曼福特不能解决负权回路问题: 如果为负权回路:每次判断是否松弛操作时,都有dis[u[i]]+w[i]<dis[v[i]] 因此每次都会减小,从而无法正确的求出最短路径   1 #include<bits/stdc++.h> 2

  • 差分约束2022-05-01 01:33:31

    差分约束模板     典型的 $x_u - x_v <= y$ 形式 #include<iostream> #include<cstring> #include<queue> #define maxn 50007 using namespace std; struct edge { int to, val, nxt; }g[maxn]; int n, m, cnt, dis[maxn], hd[maxn], sum[maxn]; bool vis[maxn

  • Educational Codeforces Round 126 (Rated for Div. 2)  A-D2022-04-30 08:32:40

    Educational Codeforces Round 126 (Rated for Div. 2) https://codeforces.com/contest/1661 昨天VP的一场 A  Array Balancing 题意 给定两个长度相等的序列a和b,可以交换同一位置上的ai和bi,该操作能进行任意次。问最小的 \[\sum_{i=1}^{n-1}(|a_i-a_{i+1}|+|b_i-b_{i+1}|) \]是

  • 分层图模板题2022-04-30 00:31:18

    感谢所有AC 分层图形式 传送门 思路        建立分层图,即复制 $k + 1$ 张图,层与层之间建立零权边。对源点进行 $dijstra$ ,得出源点到分层图上任意一点的最短路。由于最优方案并非要把所有次数用完,所以最后需要取终点的所有可能的最小值。需要注意空间大小,如果数据过大无法使用

  • Prim 最小生成树 图解2022-04-29 23:03:09

    ​ 什么是生成树 子图:G=<V,E>,G'=<V', E'>,为两个图(V为点集,即图中点的集合,E为边集),如果V'是V的子集且E'是E的子集,则G'是G的子图。 如果V'=V,则称G'为G的生成子图 如果G'是无向生成子图且是树的结构,则为生成树 最小生成树 最小生成树:是一张有权无向连通图中边权和最小的生成树 Prme算法:

  • 最短路算法总结(4.28)2022-04-28 20:34:09

    FLloyed算法--N3 求任意两点间最短路径 FOR(i,1,n) FOR(j,1,n) FOR(k,1,n){   //可同时判断两点之间是否相连   dis[i][j] = min(dis[i][k] + dis[k][j] , dis[i][j]); }   DIJKSTRA算法--N2 (不能处理负边权) 从一个点到其他所有点的最优算法 需要要素:dis[]从起点到

  • 关于 Bellman-ford算法2022-04-27 17:32:11

    · 单源最短路算法 · 可以处理负边权,甚至可以处理有负环的情况 · 对每一条边额外进行一次松弛,如果松弛成功,即 dis[u]+w(u,v)<dis[v] 成立,则图中存在负环路,也就是说该图无法求出单源最短路径 · 适合稀疏图   bool bellman_ford() { for(int i=1; i<=n; i++) {

  • CF1662I Ice Cream Shop 题解2022-04-26 20:00:24

    可能更好的阅读体验 题目大意 在沙滩上有 \(n\) 个小屋,可以看做小屋在一条数轴上,第 \(i\) 个小屋的位置为 \((i-1)\times100\),里面有 \(p_i\) 个人。这条数轴上还有 \(m\) 个小屋,每个买冰淇淋的商店,第 \(i\) 个商店的位置为 \(x_i\)。 现在你可以再数轴上任意一个位置(不需要为整数

  • 图论最短路算法2022-04-24 17:32:50

    图论最短路讲的并不是两点之间线段最短,对于有向图or无向图来讲,最短路表示的路径上(边上)权值和的大小,如果是最小,我们称这是图的最短路; 最短路算法大致分:多对多,单对多,单对单; 而根据算法的类型不同,图的最短路算法有这三种算法:floyd-warshall,bellman-ford,dijkstra; 对比这三种算法,我

  • 图论-最小生成树-贪心2022-04-22 22:32:36

    最小生成树 概念 在所有图所形成的生成树中边权值最小的 生成树条件: 1.包含联通图的n个顶点,n-1条边 2.移除任何一条边都会导致不联通 3.生成树中不包括环 堆优化的prim算法(vector模拟邻接表) prim要素 任意从一个点开始,每次选出一个未用点到已用点最短的点,以此点来更新其他点到已用

  • P4206 [NOI2005] 聪聪与可可2022-04-22 13:00:25

    预处理 nxt[i,j] 表示i到j最近距离i的下一个位置 最后记忆化搜索就好 #include<cstdio> #include<queue> #include<cstring> #include<iostream> using namespace std; int cur,n,m,s,t; int head[1005],p[1005]; int dis[1005][1005],nxt[1005][1005]; bool vis[1005],visit[

  • 算法学习-图论-图的存储-最短路2022-04-19 10:31:06

    题目概述及细节 单源最短路,模板,luoguP3371 单源最短路,模板 dij算法 核心是把节点分为两类,一类是以确定到起点最短的距离,一类是没有确定 初始时所有都未确定 从没有确定的节点中选取一个距离起点最短的 依据此点确定别的未更新的点的距离 首先补充题目中常见的数值: int -2^31=-21

  • 深入理解floyd算法【用动态规划思路】2022-04-18 17:03:40

    先上floyd算法的代码,本质上是动态规划问题本质就是DP含有动态规划的思想,满足重叠子问题和最优子结构dis[k][i][j]=min(dis[k-1][i][j],dis[k-1][i][k]+dis[k-1][k][j]);我们可以发现他其实是由前k-1的状态来推出第k个点的状态之后你就会发现f[k]只与f[k-1]有关 然后我们可以根据这

  • L3-011 直捣黄龙 (天梯赛)2022-04-18 12:32:14

    很明显就是一道最短路问题 并且记录路径 还有一个坑点是 第一个输出的是最短路径数目 不是经过节点数目!!! 最后就是输出路径 我开始一直写成 pre[u]==mp[S]了 导致老是路径输出少一个 最后才发现错误 应该是u==mp[S] !!!! #include<bits/stdc++.h> using namespace std; #define lo

  • P3640 [APIO2013]出题人 题解2022-04-17 16:02:07

    一道神仙图论题,很考验各位对最短路以及染色问题的理解。 首先说明 1 点,实质上神秘问题就是经典的染色问题。 这里首先简要分析一下给出的几个代码的特色: FloydWarshall:稳定的 \(O(V^3)\) 运行。下称 Floyd。 OptimizedBellmanFord:加了优化的 Bellman-Ford,但是只要在每一轮松弛的

  • 图论专题-学习笔记:差分约束2022-04-17 15:32:19

    目录一些 Update1. 前言2. 详解3. 扩展4. 总结 一些 Update Update 2021/11/16:发现之前推的结论有严重错误,现已更正,如果有读者被误导,在此深表歉意。 1. 前言 差分约束是一种最短路算法,专门用来解决下面这类问题: 已知 \(n\) 个正整数 \(x_1,x_2,...,x_n\),与 \(m\) 个形如 \(x_i-x_j

  • 图论专题-网络流-学习笔记:dinic 求解费用流2022-04-17 15:00:15

    目录1. 前言2. 详解3. 总结 1. 前言 本篇博文将会重点讲解 dinic 求解费用流。 费用流全称:最小费用最大流,其一般的问题描述如下: 给出一张网络 \(G=<V,E>\),每条边有两个权值:\(f,v\)。 \(f\) 表示这条边的最大流量,\(v\) 表示单位花费,也就是说从这条边每流过一单位流量就要增加 \(v\)

  • 2022/4/17模拟2022-04-17 12:33:25

    今天又模拟辣! 今天又起晚辣! T1: 这是个模拟,所以对着大样例找规律就行了,就几行,不知道对不对。 但是找规律还是挺花时间的说,花了半个点之久(还是太菜了   T2: 最短路吧。 YbtOJ原题吧,不然我这废物怎么做得出来。 花了20分钟敲了个dijkstra,走了。 #include<cstdio> #include<queue> #i

  • pat甲级打卡-1003 Emergency2022-04-16 23:33:40

    #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 505; int dis[N],w[N]; bool visit[N]; int e[N][N],weight[N],num[N];//num 记录到 i 的最短路径条数 int n,m,c1,c2; const int inf = 99999999; //target 输出最短路

  • 最短路小结2022-04-16 18:00:50

    单源最短路径 DIjkstra 算法 auto Dijkstra = [&](int s) { std::priority_queue<PII, std::vector<PII>, std::greater<PII>> q; std::vector<int> dis(n + 1, inf), vis(n + 1); dis[s] = 0; q.push({0, s}); while (!q.empty())

  • 2022.02.23 网络流复习2022-04-15 21:02:47

    2022.02.23 网络流复习 https://www.cnblogs.com/Miracevin/p/11245896.html https://www.cnblogs.com/Miracevin/p/10028021.html https://www.cnblogs.com/Point-King/p/15724247.html 1. 费用流 1.1 关于费用流的理解 https://www.cnblogs.com/Miracevin/p/10028021.html 1.1.1

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有