Til the Cows Come HomePOJ - 2387 题意:给你一幅地图,点1~N,双向正权路,问你N到1的最短路径? 算法:Dijkstra或者SPFA 思路:因为是正权路径,可以用Dijkstra算法;SPFA区别就是可以判断负权环。 1 #include <iostream> 2 #include <vector> 3 #include <cstring> 4 #include <algorithm
首先发现这个 \(|a_i-a_j|=1\) 的形式比较接近差分约束,稍微转化一下就是:\(-1\le a_i-a_j\le 1\) 且 \(a_i\neq a_j\)。于是你会发现 \(a_i\neq a_j\) 不是差分约束的条件。 换个角度。容易发现一条边相连的两个点一定奇偶性不同。考虑原图中若存在奇环,那么显然这是自相矛盾的。所
部分内容参考了李煜东的《算法竞赛进阶指南》,在此声明。 单源最短路径 单源最短路径问题,是说,给定一张有向图(无向图)\(G=(V,E)\) ,\(V\) 是点集,\(E\) 是边集,\(|V|=n\),\(|E|=m\),节点是 \([1,n]\) 之间的连续整数,\((x,y,z)\) 描述一条从 \(x\) 到 \(y\) 边长为 \(z\) 的有向(无向)边
下面的全都不会 图论 存储图 邻接矩阵(权矩阵) 边集数组 邻接表 最小生成树MST Prim(贪心) Kruskal(贪心) 最短路 Floyd(₯)(多源最短路APSP) Dijkstra(贪心)(单源最短路SSSP)(不可负权) Bellman-Ford(SSSP)(可负权) SPFA(SSSP)(队列优化Bellman-Ford)
第一次打虚拟赛。 CF 传送门 T1:Contest for Robots 统计 \(r[i]=1\) 且 \(b[i]=0\) 的位数 \(t1\) 和 \(r[i]=0\) 且 \(b[i]=1\) 的位数 \(t2\)。 两个数都为 \(0\) 或都为 \(1\) 时没有贡献。 若 \(t1=0\),则 \(r\) 序列不管乘多大的 \(p\) 也不会比 \(b\)序列更大,所以直接输出 \(
【题解】P5304 [GXOI/GZOI2019]旅行者 一道利用 dijkstra 的很妙的图论题! 加深了我对于 dijkstra 的理解。 (于是在做完这道题两天后的模拟赛中遇到了和它套路几乎一样的,我却甚至没有想到用最短路……) 所以写个题解记录一下吧。 题目链接 [GXOI/GZOI2019]旅行者 - 洛谷 题意概述
链接:https://ac.nowcoder.com/acm/contest/26077/1031来源:牛客网 题目描述 Island 发生了一场暴乱!现在 Rinne 要和 Setsuna 立马到地上世界去。 众所周知:Island 是有一些奇怪的城镇和道路构成的(题目需要,游戏党勿喷),有些城镇之间用双向道路连接起来了,且
博客链接:https://www.codein.icu/learn-dijkstra/ Introduction Dijkstra 算法是用于求解非负权图单源最短路的经典算法。 市面上的大部分教程都仅仅停留在「如何实现 Dijkstra 算法」的层面。从应用角度,这当然无可厚非。但理解算法本身,也不失为一件乐事。 问自己这样几个问题: Di
链接:https://ac.nowcoder.com/acm/contest/26077/1033来源:牛客网 题目描述 策策同学特别喜欢逛公园。 公园可以看成一张 N 个点 M 条边构成的有向图,且没有自环和重边。其中 1 号点是公园的入口, N 号点是公园的出口,每条边有一个非负权值,代表策策经过这条
链接:https://ac.nowcoder.com/acm/contest/26077/1044来源:牛客网 题目描述 C国有n座城市,城市之间通过m条单向道路连接。一条路径被称为最短路,当且仅当不存在从它的起点到终点的另外一条路径总长度比它小。两条最短路不同,当且仅当它们包含的道路序列不同
链接:https://ac.nowcoder.com/acm/contest/26077/1034来源:牛客网 题目描述 “题目名称只是吸引你来做题的啦,其实和题目没什么卵关系:o(* ̄▽ ̄*)o” —— 历史——殿堂 wpy移情别恋啦,他不喜欢spfa了,现在他喜欢使用dij,但是他又发现了一个新的问题,dij
链接:https://ac.nowcoder.com/acm/contest/26077/1012来源:牛客网 题目描述 小雨所在的城市一共有 mmm 条地铁线,分别标号为 1 号线,2 号线,……,m 号线。整个城市一共有 nnn 个车站,编号为 1∼n1 \sim n1∼n 。其中坐 i 号线需要花费 aia_iai 的价格,每坐一
这个星期接到了要开学的消息,心情是非常慌张的,毕竟还没有学到多少东西。但确实是要开学了。心中说不出激动还是紧张,那就带着这种奇妙的情绪记录这次的学习吧 首先必然还是看了相关的程序,记没记下来是另外一说,但我确实是看了的。然后就是一些Java的知识,在这里我把它复制过来 &和&
A* 算法 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> PII; typedef pair<int,PII> PIPII; const int N = 1e6 + 10; int n, m, S, T, K; int h[N], rh[N], e[N], ne[N], w[N], idx; int d[N], c
https://www.luogu.com.cn/problem/P1821图论,最短路黄色题 思路: 主要就是比模板多了一个反向建图 我们首先想到的是从每个点都求一遍到终点的最短路,这样会加大时间复杂度。 所以,我们可以反向建图,直接把单终点最短路转为单源最短路,只需要跑两次最短路算法,显然是稳过的。(可以自
带条件的 BFS 最短路 点击查看代码 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 2e5 + 10; int n, m; int d[N]; int bfs(int x) { queue<int> q; q.push(x); memset(d, -1, sizeof d); d[x] = 0; while (q
//去你妈的,关于\(SPFA\),它活了 原理 其实\(SPFA\)就是干这玩意的 由于差分约束的标准形式$$x_i-x_j\leq b$$ 和最短路的三角不等式极为相似,(三角不等式是\(Bellman-Ford\)最短路算法原理) 于是考虑直接建图跑最短路 建图 我学的建图方式是: 对于\(x_i-x_j\leq b\)这个式子: 连一条\(
Luogu5122 Fine Dining G Present 7.0 不难想到先从 \(n\) 跑一遍最短路得到每个点 \(i\to n\) 的最短路长度 \(\text{dist}_i\),然后新建一个点 \(S\),对每个有干草的点 \(u\) 我们连边 \(S\to u\),边权为 \(\text{dist}_u-\text{val}_u\),其中 \(\text{val}\) 表示美味程度。 从 \(S
private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。protected : 对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)。pu
访问修饰符 public,private,protected,以及不写(默认)时的区别 定义:Java中,可以使用访问修饰符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。 分类 private : 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)default (即缺省,什么也不写,不使用
这篇博客收录的屠论题目难度都为绿题及以上。 \(\text{P1828: 香甜的黄油:Dijkstra}\) \(\ \text{状态:Accepted}\) \(\textbf{普及+/提高}\) 个人感觉这题较氵。跑 \(n\) 遍 \(\text{Dijkstra}\) 即可。 \(\text{P1347: 排序:Floyd}\) \(\ \text{状态:Accepted}\) \(\textbf{提高
图论的最短路问题4种方法结合(亲测可过) dijkstra 算法 基础版,我认为对于算法思想很有帮助,但是性能一般(doge) #include<bits/stdc++.h> using namespace std; const int N=510,INF =0x3f3f3f3f; int n,m; //points and angles int g[N][N]; //邻接矩阵 int d[N]; //the distance fr
原文链接 一、求正权图的单源最短路 对于求正权图的单源最短路问题,我们一般使用Dijistra算法求解 Dijistra算法 Dijistra算法的基本思想是贪心。 我们可以先把所有点的距离设为一个无穷大的数,然后将起始点的\(dis\)设为一,每次找一个\(dis\)最小并且没有被标记过的点,然后将这个点
神仙思路,如果你想到那你就做出来了,想不到就完全做不动。 1. 差分约束系统 这个东西应该是耳熟能详的了。 我们知道最短路里有这个不等式:\(d_y\leqslant d_x+w_{x,y}\) 那么有 \(d_y-d_x\leqslant w_{x,y}\)。然后就能用来做题了。 一般有下面几种变形: \(x_i-x_j\leqslant c_k\):
这个算法不能处理负环情况,请转到Floyd算法或SPFA算法(SPFA不能处理负环,但能判断负环) SPFA(SLF优化):https://www.cnblogs.com/yifan0305/p/16391419.html 代码很长,耐下心来看完,存储方法为链式前向星存储。 (如果内存放得下的话,建议稠密图用邻接矩阵(或者跑floyd),稀疏图用邻接表,只是