
图论
1
__meteor
对于未来, 我只是一个孩子;
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
在仙人掌图上dp的处理 BZOJ1023+BZOJ1487
仙人掌图就是图中包含圈,但是圈不能共边。举个例子, 如下图1、2、3: 假如将这些圈的都缩成点,显然就是一棵树了,对于一棵树进行dp,那就很简单了。 因此,处理这类问题需要分两步。 1.当dp的边是桥,也就是不是环上的边,那我们就正常的从他的孩子中取最优解转移到该节点。 2.当dp的边是在环上。我们需写一个函数对该环单...原创 2018-08-07 16:25:30 · 531 阅读 · 0 评论 -
HDU 6350 Always Online (仙人掌图,最大流)
传送门 这道题真的是坑,竟然用ull,ll都会爆。 首先这是一个仙人掌图。题意让求任意两点最大流,再进行异或。先说最大流,对于环上任意两点最大流,就是两条路径最小的边和,这就等效于求出环中最小的边,使环上任意一条边都加上这条边,然后去掉最小边。这样会求出一棵树。我们将边按从大到小排序,每次向空图里加一条边(用并查集维护),那么加的这条边就是两个连通分量的最大流。 还是老方法。对于仙人掌图,(...原创 2018-08-12 21:25:18 · 955 阅读 · 0 评论 -
HDU5884 二分+哈弗曼树
传送门 huffman模板,如果每次取k个能取完,num=k,取不完先将n%(k-1)取完,再每次取k #include<bits/stdc++.h> using namespace std; const int N=1e5+10; typedef long long ll; int arr[N], n, limit; /****************************/...原创 2018-08-28 11:37:13 · 161 阅读 · 0 评论 -
CF1037E图论思维(set::erase的用法)
传送门 #include<bits/stdc++.h> using namespace std; #define fir first #define sec second const int N=2e5+10; typedef pair<int, int> pii; pii e[N]; set<int> G[N]; bool removed[N]; int ...原创 2018-09-04 19:12:30 · 235 阅读 · 0 评论 -
HDU 4408 最小生成树计数
传送门 思路:首先需要了解Matrix_Tree定理 1.设 G是无向图的邻接表,D是无向图各个点的度数 2.令M=D-G,则M的任意n-1阶余子式的行列式值的 绝对值, 就是无向图生成树的个数 应注意的是邻接表的值不只是0,1值,也就是说,当图出现重边的话,邻接表该位置累加。 这道题思路,对于最小生成树,克鲁斯卡尔算法是将边从小到大排序,对于同一大小的边, 在最小生成树中用到的数量是...原创 2018-09-21 13:05:35 · 270 阅读 · 0 评论 -
HDU - 5521 巧妙地最短路
题意:n个点,m块,块的意思就是说,在块中的点任意两点的距离都是t,问分别从1点和n点走到某个点,这个点的花费就是二者较大的,问这n个点花费最小是多少,并按字典序打印序号 思路:这题头疼的就是不知道怎么建图,暴力建图会超内存,有一个巧妙的方法是 将这个块中的点全部连到一个点上,每条边花费t/2,这样任意两点仍然是t的花费。 这样最多1e6条边 #include<bits/stdc+...原创 2018-10-10 14:19:38 · 210 阅读 · 0 评论 -
ZOJ 3732 可图性判定--Havel-Hakimi定理
题意:给定n个点度数,问是否可以构造一个简单图。 思路:Havel-Hakimi定理 : 1.将度数从小到大排序 2.用第一个向后面连续d[1]个点连边,若点数不够则不能构造 3.若点数够,则将每个点度数减1,若出现负值,则不能构造, 4.去掉该点返回步骤一,直到集合中没有点。 对于多个图,只需要判定i+d[i]和i+d[i]+1这两个点度数是否一致, 若一致就交换。即可达到不同图的...原创 2018-10-26 18:53:39 · 278 阅读 · 0 评论