![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
图论
苏_幕遮
......
展开
-
分层图题集
分层图的模板和最短路一样,正所谓图论的99%难点都在建图。用分层图的几种情况:1、有k个不同集合的边,将每个集合内的边建成一张图,再建立第k+1个图,是一个虚层,用这个虚层将这k张图连接起来。每次可以通过虚层转移到另一个集合的图中。如例1.小雨坐地铁。2、有k个机会使得走当前此边不花费代价或花费特殊的代价,可以建立k张相同的该图,每张图之间用有边的点连接起来,其代价是0或是特殊的值。每向下走一层,就代表用了一次机会,使得当前的路花费为0,最多可以走k次。如例2.飞行路线。3、有k个机会逆向行驶,我们...原创 2020-10-06 21:20:04 · 378 阅读 · 0 评论 -
最短路径生成树
最短路径生成树是一棵树,它的根节点为S,在这棵树上跑dijkstra与在原图上跑得到的d会是完全一样的。这棵树的生成可以用dijkstra来理解。每个未被标记的节点把d推priority_queue,取出堆顶x,x先被标记。然后更新与x相连的节点,如果有d[y]>d[x]+e[k].c,那么把y节点以及k这条边一起选入预定的最小路径生成树。当y被标记时,这条预定的边变成实际的最小路径生...原创 2019-04-24 19:08:22 · 845 阅读 · 0 评论 -
网络流24题
1.匈牙利算法#include<bits/stdc++.h>using namespace std;bool g[200][200],used[200];int ans,n,m,linker[300];bool dfs(int u){ for(int v = 0;v < m; ++v) { if(g[u][v] &&am...原创 2019-04-20 10:32:04 · 87 阅读 · 0 评论 -
bitset用法
P4306 [JSOI2010]连通数做强连通分量的时候刷到的题,看到题解惊呆了。太太太秀了。#include <bits/stdc++.h>#define N 2010#define LL long longusing namespace std;char s[N];bitset<N>f[N];int main(){ int n,p,i,...原创 2019-04-01 22:13:55 · 133 阅读 · 0 评论 -
2019山东省赛L题题解
最后半个小时心态崩掉的时候看到了这个题,只能说兜兜转转都是缘分啊,愉快的敲了50行模板交上了题意:n个数字,给出一些大小关系(给出的关系中没有等于),对于1<= x <= n,看是否可以构造出一个序列a使得ax为中位数(n为奇数)思路:1)只要有环,对于所有1<= x <= n都是不可能满足题意的2)考虑中位数的特殊性,中位数意味着一定有n个比它大的,...原创 2019-05-13 19:17:20 · 283 阅读 · 2 评论 -
树的直径
树的直径即树上的最长路径POJ 1849题目: 有一棵树, 在s结点放两个机器人把树的每条边都走一遍,最后机器人不要求回到出发点。问两个机器人走的路总长之和的最小值是多少?解:让机器人沿着从起点开始的某一条最远距离路径走,对于路径上的其他子树,机器人需要进入遍历并返回,花费两倍的子树权值和,由于机器人不需要回到起点,所以答案为2∗∑wi−d,d为出发点所能到达的最远距离。同理,如果有两...原创 2019-07-29 11:28:08 · 73 阅读 · 0 评论 -
并查集kuangbin专题
把内容迁到这里来了,作为一部分补充初始化:for(int i = 1;i <= n; ++i)f[i] = i;路径压缩:int find(int t){ if(f[t] == t) return t; f[t] = find(f[t]); return f[t];}合并:f[find(x)] = find(y);NOIP2...原创 2019-07-31 15:11:59 · 197 阅读 · 0 评论 -
kuangbin专题 匹配问题
主要是1)二分图最大匹配匈牙利和HK算法2)二分图多重匹配3)二分图最大权匹配KM算法以及较难的一般图匹配带花树算法总结:通过做题目对二分图的各种性质有了更深刻的理解二分图不可能有奇环,所以很多算法的实现都变得简单很多,但到了一般图就很难了,嗯~~~一般图的各种匹配算法还在摸索二分图最小点覆盖 (这一小部分是找的一篇博客https://blog.csdn.net/ACT...原创 2019-08-08 20:01:58 · 243 阅读 · 0 评论 -
一般图匹配带花树详解
其核心思想还是找增广路这里必须提到为什么二分图的算法和一般图要分开,在于二分图是不可能有奇环的(为什么可以自己画个图试试),而处理一般图的瓶颈就在于奇环的处理让我们来慢慢看假设已经匹配好了一堆点,我们从一个没有匹配的节点s开始,使用BFS生成搜索树。每当发现一个节点u,如果u还没有被匹配,就可以进行一次成功的增广;否则,我们就把节点u和它的配偶v一同接到树上,之后把v丢进队列继续搜索。...转载 2019-08-09 09:27:56 · 196 阅读 · 0 评论 -
一般图匹配带花树hdu4687 & ural 1099
S - Boke and TsukkomiHDU - 4687A new season of Touhou M-1 Grand Prix is approaching. Girls in Gensokyo cannot wait for participating it. Before the registration, they have to decide which combinat...原创 2019-08-09 09:56:04 · 260 阅读 · 0 评论 -
KMP & 扩展KMP & Manacher 专题
A题:简单的匹配问题,kmp的模板B题:同A题C题:一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案。对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢?问最多能匹配几次,不过每个字符最多只能被用一次只改一改匹配成功之后下一次的匹配位置即可,原本是匹配成功j = Next[j],但是我们需要匹配成功之后从头开始匹配,改成j = 0即可...原创 2019-08-12 19:57:02 · 75 阅读 · 0 评论 -
Floyed应用---多源最短路 优化
很多人在学习最短路的最初就学spfa,迪杰斯特拉等算法而忽略了最基础的Floyed事实上作为一种动态规划解法,又是唯一的多源最短路,它的应用还是很广的下面来列举几个题来了解一下求最小环传递闭包优化问题等等...vijos P1046 最小环无向图求最小环 因为数据很小,所以弗洛伊德算法就可以了#include<iostream>#inclu...原创 2019-03-14 17:01:05 · 301 阅读 · 0 评论 -
二分图最大权匹配KM算法
二分图好像有很多种匹配(之前都不会),做题的时候发现了一个匹配的题就来学一学啦首先,参考了一篇很有意思的博客http://www.cnblogs.com/wenruo/p/5264235.html顺便偷偷把代码偷来用一用#include <iostream>#include <cstring>#include <cstdio>using ...原创 2019-04-17 19:06:43 · 112 阅读 · 0 评论 -
LCA裸题 Distance in the Tree URAL - 1471
A weighted tree is given. You must find the distance between two given nodes.InputThe first line contains the number of nodes of the tree n (1 ≤ n ≤ 50000). The nodes are numbered from 0 to n–1....原创 2019-04-14 13:11:21 · 241 阅读 · 0 评论 -
codevs 1222 二分图匹配
题目描述 DescriptionJohn先生晚上写了n封信,并相应地写了n个信封将信装好,准备寄出。但是,第二天John的儿子SmallJohn将这n封信都拿出了信封。不幸的是,SmallJohn无法将拿出的信正确地装回信封中了。将SmallJohn所提供的n封信依次编号为1,2,…,n;且n个信封也依次编号为1,2,…,n。假定SmallJohn能提供一组信息:第i封信肯定...原创 2019-04-09 21:28:07 · 106 阅读 · 0 评论 -
强连通分量
若有向图中,u和v之间可以互相到达,则称u,v是强连通的在有向图G中,如果两点互相可达,则称这两个点强连通,如果G中任意两点互相可达,则称G是强连通图。 定理: 1、一个有向图是强连通的,当且仅当G中有一个回路,它至少包含每个节点一次。 2、非强连通有向图的极大强连通子图,称为强连通分量(SCC即Strongly Connected Componenet)...原创 2019-04-01 09:22:12 · 183 阅读 · 0 评论 -
最小生成树 prim
加点法,以一个点为起点,查找与它相连的所有边中最小的一条,把端点加入队列,然后再从这个端点往外扩展其他的边http://codevs.cn/problem/1078/#include<iostream>#include<cstdio>#include<algorithm>#include<string>#include<queue&...原创 2019-03-02 11:02:08 · 90 阅读 · 0 评论 -
最小生成树 Kruskal
将所有边排序,按边权从小到大,如果当前的边的端点还没有连接,就把这条边加上,判断是否连接当然是用神奇的并查集啦题目描述 Description农民约翰被选为他们镇的镇长!他其中一个竞选承诺就是在镇上建立起互联网,并连接到所有的农场。当然,他需要你的帮助。 约翰已经给他的农场安排了一条高速的网络线路,他想把这条线路共享给其他农场。为了使花费最少,他想铺设最短的光纤去连接所有的农场。 你将得到一份...原创 2019-03-02 10:42:01 · 95 阅读 · 0 评论 -
SPFA及其优化---他复活了
SPFA算是一种比较万能的最短路算法了时间复杂度:O(mn)特点:1.每个点可以入队多次2.不能处理负环,但可以判断负环3.队列优化减少一些冗余的松弛操作贴一个模板题http://www.acmicpc.sdnu.edu.cn/problem/show/1223#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;al...原创 2019-03-02 09:06:15 · 556 阅读 · 0 评论 -
Dijkstra模板题
https://www.luogu.org/problemnew/show/P3371鉴于残暴的人喜欢卡SPFA,研究一下DIj贴个代码#include<iostream>#include<cstdio>#include<algorithm>#include<queue>#include<string>#include<...原创 2019-03-01 22:03:00 · 592 阅读 · 0 评论 -
POJ 3037 最短路算法
DescriptionBessie and the rest of Farmer John’s cows are taking a trip this winter to go skiing. One day Bessie finds herself at the top left corner of an R (1 <= R <= 100) by C (1 <= C <...原创 2019-03-01 16:26:11 · 179 阅读 · 0 评论 -
并查集
初始化:for(int i = 1;i &lt;= n; ++i) f[i] = i;路径压缩:int find(int t){if(f[t] == t) return t;f[t] = find(f[t]);return f[t];}合并:f[find(x)] = find(y);NOIP2010关押罪犯:构造虚点假设x号罪犯与y号罪犯是仇人,x+n号罪犯与y+n号罪犯是仇人...原创 2019-02-25 20:10:32 · 84 阅读 · 0 评论 -
HDU - 4081 Qin Shi Huang's National Road System 次小生成树
HDU - 4081During the Warring States Period of ancient China(476 BC to 221 BC), there were seven kingdoms in China ---- they were Qi, Chu, Yan, Han, Zhao, Wei and Qin. Ying Zheng was the king of the k...原创 2019-03-03 11:02:27 · 132 阅读 · 0 评论 -
次小生成树模板题 The Unique MST POJ - 1679
题目大意: 问一个图的最小生成树是不是唯一的QAQ prim计算最小生成树的同时,记录最小生成树里面两点间的权值最大的边#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include &...原创 2019-04-16 11:12:56 · 72 阅读 · 0 评论 -
最小树形图
最小树形图---有向图的最小生成树(与无向图不一样QAQ)朱刘算法(必须从0开始存)POJ 3164 模板题#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;struct node{ int x,y; double z;}t[100100];int xi...原创 2019-04-14 21:07:46 · 353 阅读 · 0 评论