摘要:
无源汇有上下界可行流(也就是循环流) 模型:一个网络,求出一个流,使得每条边的流量必须>=Li且<=Hi, 每个点必须满足总流入量=总流出量(流量守恒)(这个流的特点是循环往复,无始无终) 可行流算法的核心是将一个不满足流量守恒的初始流调整成满足流量守恒的流 流量守恒,即每个点的总流入量=总流出量 阅读全文
摘要:
没有理解代码。单纯记模板 阅读全文
摘要:
// 最小瓶颈路 指两点之间所有路径中最大的边最小的路径//在最小生成树中,最小瓶颈路就是两点之间的最大值; 先给出一个概念,最小生成树一定是最小瓶颈树(注意这里是树),但反过来的话就不一定; 所以,我们可以用最小生成树的知识来解; 在解的时候,我们需要一步一步的将新加进来的点,与原先已经加进来的点 阅读全文
摘要:
这道题与模板之间,多了个确定哪个为根的操作; 这道题有技巧,并不需要真正去建立以某个节点为根的树 关于路径的操作,无论以哪个点为根,得出的答案无影响; 关于对子节点进行操作的,有几种情况, 当查询节点刚好是根节点的话,就直接从1开始遍历就好 (因为这道题是以1为根节点) 当查询的节点的孩子或孙子中包 阅读全文
摘要:
https://www.cnblogs.com/chinhhh/p/7965433.html#firstt 阅读全文
摘要:
前置知识:拓扑排序 详细注释都在代码里 1 //该题题意明确,就是给定一组字母的大小关系判断他们是否能组成唯一的拓扑序列。 2 //是典型的拓扑排序,但输出格式上确有三种形式: 3 4 // 1.该字母序列有序,并依次输出; 5 6 // 2.该序列不能判断是否有序; 7 8 // 3.该序列字母次 阅读全文
摘要:
1 //n个点m条有向边,求在入度为零的点到n号点的所有路 2 //径中,哪条边被这些路径覆盖的次数最多 3 //有关DAG的知识,先记个模板 4 #include<iostream> 5 #include<cstdio> 6 #include<cstring> 7 #include<algorithm> 8 using namespace std; 9 typedef long long ll; 阅读全文
摘要:
大意:给定一个无向连通图,判断至少加多少的边,才能使任意两点之间至少有两条的独立的路(没有公共的边,但可以经过同一个中间的顶点)。 思路:在同一个双连通分量里的所有的点可以看做一个点,收缩后,新图是一棵树,树的边便是原图的桥。现在问题转化为“在树中至少添加多少条边能使图变成边双连通图”,即添加的边的 阅读全文
摘要:
1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 const int maxn=1e3+10; 6 7 int dfn[maxn],low[maxn],head[maxn],vis 阅读全文
摘要:
难得不是左偏树,而是思维; 这道题在做得时候,有两个性质 1.如果a是一个不下降序列,那么b[i]==a[i]时取得最优解。 2.如果a是一个严格递减序列,则取a序列的中位数x,令b[1]=b[2]=b[3]=...=b[n]=x,即是最优解。 于是在做得时候,我们会分为几个区间,通过区间得合并去做 阅读全文