上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页
摘要: 预处理复杂度\(O(n\ log\ n)\),查询复杂度\(O(log\ n)\)。 主要思想是倍增,通过预处理出夫亲的倍增数组实现快速求LCA 1 的父节点取 0 是为了方便树上差分,1 的深度设置得比 0 大是为了防止在求LCA时跳到0. 挺好理解的。 #include<bits/stdc++. 阅读全文
posted @ 2022-02-24 11:36 cbdsopa 阅读(63) 评论(0) 推荐(0)
摘要: 在用树剖解决问题时发现,每次跳链的时候,就有跳到两点LCA的可能。 所以还是有之前树剖的思想,其实和倍增的LCA很像。 优点:常数小,实现很好理解也很好写。预处理复杂度$O(n)$,查询$O(log\ n)$,附带常数小。 感觉比倍增好写,而且还快。 实现如下:(预处理点这里) inline voi 阅读全文
posted @ 2022-02-24 11:36 cbdsopa 阅读(41) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> using namespace std; #define N 2010 #define M 200010 #define INF 0x3f3f3f3f inline int read() { int s=0,f=1; char ch=getchar() 阅读全文
posted @ 2022-02-24 11:35 cbdsopa 阅读(154) 评论(0) 推荐(0)
摘要: 不是费用流都需要用 SPFA 吗。 众所周知,SPFA 去世了,然后网络流显然有负边。于是我们可以像 Johnson 全源最短路一样,给边加上势能,具体实现看我之前的 博客 啦。 然后对于每一次跑 Dijkstra ,然后得到最短路,把势能要再加上这个最短路,可以证明这样操作一次图上不会再有负边。 阅读全文
posted @ 2022-02-24 11:34 cbdsopa 阅读(72) 评论(0) 推荐(0)
摘要: 最大流 #include<bits/stdc++.h> using namespace std; #define N 210 #define M 5010 #define INF 0x3f3f3f3f int n,m,S,T; vector<int>head,to,nxt,val; void joi 阅读全文
posted @ 2022-02-24 11:33 cbdsopa 阅读(71) 评论(0) 推荐(0)
摘要: 学这个是为了支持在带负权值的图上跑 Dijkstra. 为了这个我们要考虑把负的权值搞正。 那么先把我们先人已经得到的结论摆出来。我们考虑先用 SPFA 对着一个满足三角形不等式的图跑一次最短路,具体就是在原图的基础上建立超级源点。 然后我们把得到的这个东西称为 势能 $h$ ,我们对于原图的每条边 阅读全文
posted @ 2022-02-24 11:32 cbdsopa 阅读(40) 评论(0) 推荐(0)
摘要: 需要注意树上做最短路是$O(n)$,因为只需要一次dfs SPFA #include<bits/stdc++.h> using namespace std; int n,m,ss; bool vis[500010]; int q[1000010],dis[500010]; vector<int>he 阅读全文
posted @ 2022-02-24 11:31 cbdsopa 阅读(31) 评论(0) 推荐(0)
摘要: 用于解决前置性问题,如选A前需要先选择完B和C,或者求A前需要先求B。 具体来说,每次选择入度为0的点,并为与之有连边的点解锁度数。 vector<int>t; queue<int,vector<int> >q; bool topo() { t.clear(); for(int i=1;i<=n;+ 阅读全文
posted @ 2022-02-24 11:30 cbdsopa 阅读(33) 评论(0) 推荐(0)
摘要: 做一次最短路,并且记录最短路径中通过的边数,若边数 \(\ge n\) 则最短路中出现环,即出现负环。最长路正环同理。 #include<bits/stdc++.h> #define ll long long #define db double #define filein(a) freopen(# 阅读全文
posted @ 2022-02-24 11:29 cbdsopa 阅读(76) 评论(0) 推荐(0)
摘要: #include<bits/stdc++.h> #define ll long long #define db double #define filein(a) freopen(#a".in","r",stdin) #define fileot(a) freopen(#a".out","w",std 阅读全文
posted @ 2022-02-24 11:28 cbdsopa 阅读(32) 评论(0) 推荐(0)
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 14 下一页