KGV093的博客

Revelations and heartaches, make you realize.

bzoj 1977 (浅谈如何hack掉hzwer学长)(严格次小生成树)(LCA+kruskal)

传送门 题解:(**以下内容出自代码有错但是过了bzoj评测的hwzer学长**)先求出最小生成树,要严格次小。枚举每一条非树边找俩顶点树链上的最大边(如果最大边相同与非树边边权相同则找次大边)然后更新最小增量。最大边和次大边可以通过树上倍增求出。 下证hzwer学长和其他一些同学的错误,以hz...

2017-10-15 21:50:29

阅读数 413

评论数 2

Luogu 4779(dijkstra+线段树优化)(dijkstra+堆优化)

传送门 题意:模板题,求有向非负权图的单源最短路 题解: 明说了要卡SPFA,所以只能dijkstra+数据结构优化,不管用堆还是线段树,只有能到O(nlogn)就OK。 实测线段树略快。 注意:每次“出队”时将当前点赋值为INF(如果硬要做删除操作就只有上平衡树了233),线段树在判断...

2018-08-20 20:57:18

阅读数 211

评论数 0

Luogu 1967(货车运输)(最大生成森林+LCA)

传送门 题意:有 nn 座城市,编号从 11 到 nn ,城市之间有 mm 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。 题解:由于要装尽量多的货物,所以先用kruskal跑一个最大生成森...

2018-08-19 18:41:55

阅读数 55

评论数 0

bzoj 2208(tarjan+拓扑排序+bitset)

传送门 题意:求一个有向图中可达顶点对数(每个点可达其自身) 题解:听说可以直接用floyd传递闭包+bitset,但是为了提高效率顺便复习算法,还是采用tarjan先缩点然后反向建图在DAG上一边拓扑排序一边用bitset传递可达点集。 去年的bitset今年终于会用了...... #...

2018-08-16 14:39:55

阅读数 35

评论数 0

Luogu 3371(dijkstra堆优化)

传送门 模板题。再说一遍:dijkstra不能用入队标记。不是“不要”,是“不能”!!! #include #include #include #include #include using namespace std; const int N=10004,M=500004; int n,m,...

2017-11-09 21:27:31

阅读数 136

评论数 0

hihocoder 1098(kruskal)

传送门 模板题,原计划觉得kruskal稳如狗根本不用管,但是保险起见还是敲一遍,如果忘了就吃键盘。 #include #include #include #include using namespace std; const int N=1e5+4,M=1e6+4; int n,m,fa[N...

2017-11-09 19:57:18

阅读数 161

评论数 0

Luogu 3386(二分图最大匹配)

传送门 模板题。 新技能get:存增广标记的cov数组如果使用int类型就不用每次memset(以前的版本在之前的博文中有过),可以大幅节约时间。 晚安~ #include #include #include #include #include using namespace std; c...

2017-11-06 22:25:59

阅读数 110

评论数 0

Luogu 3388(割点)

传送门 注意:统计割点个数一定要注意算重!!!有多个儿子使当前点成为割点时计数器也只能加一次!!! #include #include #include #include using namespace std; const int N=1e5+4; int n,m,dfn[N],low[N]...

2017-11-06 19:40:37

阅读数 147

评论数 0

Luogu 3379(LCA)

传送门 模板题,我用倍增居然把它卡过了。(拒绝vector支持链式前向星!) P.S.在欧拉序列上进行RMQ也可以做到O(1)。 倍增: #include #include #include #include using namespace std; const int N=5e5+4; ...

2017-11-06 17:14:07

阅读数 89

评论数 0

bzoj 1787(LCA)

传送门 题意:一棵树 N 个结点的树,有 M 次查询:树上三个点到哪个点的距离之和最小。 题解: 求(a,b)(b,c)(c,a)三对点的LCA,深度最深的那个即使答案: 下面口胡一下证明过程: 三个LCA如果发生重合,那么显然上述做法正确,不再赘述。 如果三个LCA互不相同,那么它们...

2017-10-26 15:51:03

阅读数 92

评论数 0

bzoj 1598(SPFA+A*)

传送门 ~~~A*的经典应用~~~ 题解: 先预处理反向图的单源(T)最短路,之后启发式搜索,每次从优先队列中弹出f(p)最小的点p,如果点p就是t,则计算t出队的次数,如果当前为t的第k次出队,则当前路径的长度就是s到t的第k短路的长度,算法结束,否则遍历与p相连的所有的边,将扩展出的到p...

2017-10-22 12:53:08

阅读数 93

评论数 0

Luogu 1525(并查集)(NOIP 2010)

传送门 NOIP 2010 T3 题解: 1.二分图匹配 2.镜像并查集 P.S.小心答案为0 #include #include #include #include using namespace std; const int MAXN=2e4+4,MAXM=1e5+4; int...

2017-10-20 19:20:28

阅读数 84

评论数 0

bzoj 4443(二分+二分图最大匹配)

传送门 题解: 二分答案x,对于权值不大于x的点行列连边,跑二分图最大匹配,如果匹配数小于n-k+1(第k大即第n-k+1小),则left增大,否则right减小。最后分到的left+1一定是答案。 #include #include #include #include using na...

2017-10-13 20:32:42

阅读数 82

评论数 0

bzoj 1202(差分约束)/(带权并查集)

传送门 如果看到题不知道要转前缀和就可以退竞晒了。。。 题解1: (差分约束我居然1A了啦啦啦~~~,虽然这是道大水题) s[b]-s[a-1]=c,一看就是差分约束的套路: s[a-1]≤s[b]-c,连边(b,a-1,-c) s[b]≤s[a-1]+c,连边(a-1,b,c) 将...

2017-10-13 14:39:55

阅读数 154

评论数 0

hdu 1829(带权并查集)

传送门 题解:并查集维护0/1权值。#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int M...

2017-10-13 11:13:43

阅读数 138

评论数 0

hdu 3047(带权并查集)

传送门 昨天才考过一道差不多的,用离线+BFS预处理+裸并查集水掉了(^_^) 题意: 有n个人坐在zjnu体育馆里面,然后给出m个他们之间的距离, 代表B的座位比A多X.。然后求出这m个关系之间有多少个与之前的关系有冲突。 题解: 用带权并查集维护点到根距离,在merge操作时: P.S....

2017-10-13 09:08:47

阅读数 91

评论数 0

bzoj 4668(并查集按秩合并)

传送门 题意: 两种操作,强制在线。 1.将u,v连边 2.询问u,v最早什么时候已经连通 题解: 每次连边就更新时间戳赋成每个点的点权,查询链上最大值,所以不能压缩路径(压了路径无法解决分叉的情况),为了保证复杂度,采用按秩合并(复杂度mlogm?)。 #include...

2017-10-13 08:36:03

阅读数 161

评论数 0

hdu 1150(最小点覆盖)

传送门 二分图最大匹配=最小点覆盖 题解:二分图左边点集为机器A的模式,右边为机器B的模式。对于每个任务,左右连边,最后跑一遍二分图最大匹配(最小点覆盖)即可。#include<cstdio> #include<cstring> #include<iostream...

2017-10-12 21:30:50

阅读数 99

评论数 0

bzoj 4950(二分图最大匹配)

传送门 题意:求在不改变整个区域的三视图的前提下最多能拿走多少的箱子。 题解:(以下均在俯视的情况下) 对于每个有物品的格子,如果它有k个物品,最多能拿走k-1个。 显然只要留下每行每列最大值即可使三视图不变,于是将减多的补回来。然而这么操作有忽略了一个问题,题目说这个家伙可以重新安排物品...

2017-10-12 21:06:29

阅读数 119

评论数 0

lightoj 1123(增量最小生成树)

传送门 每次跑最小生成树,如果生成环就把当前边(无效边)去掉。 #include #include #include #include using namespace std; const int MAXN=204,MAXM=6004; int n,m; int fa[MAXN]; str...

2017-10-12 19:34:29

阅读数 164

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭