随笔分类 -  图论

摘要:"传送门" 点分治这个算法一开始学的时候真的觉得这就是玄学,因为按道理来说,这样递归应该是$n^2logn$的呀,为什么就是$nlog^2n$呢?然后我就想到了树链剖分这个神奇的算法,想到了轻重链,忽然就明白了,因为点分治可以每次找重心,保证了递归层数不超过$logn$层,感觉和树剖挺像的。 关于这 阅读全文
posted @ 2017-09-29 21:47 玫葵之蝶 阅读(235) 评论(0) 推荐(0)
摘要:"传送门" 十分裸的一个树链剖分,这也是我第一次过树剖题,好激动! 关于这个算法我不多说,自己百度。 代码: cpp / Problem: 1036 User: stone41123 Language: C++ Result: Accepted Time:2484 ms Memory:5676 kb 阅读全文
posted @ 2017-09-27 12:06 玫葵之蝶 阅读(245) 评论(0) 推荐(0)
摘要:传送门 说是这题叫什么弦图染色,我反正不懂,只是学了这个问题的一种算法,叫最大势算法,就是一开始每个点值为0,每次取出值最大的点,删除它,然后将周围每个没被删除的点的值+1,最后答案就是值的种类。 这样就可以用一个堆来维护,好像还可以用n个链表来维护每个值的所有点,可... 阅读全文
posted @ 2017-09-20 18:51 玫葵之蝶 阅读(191) 评论(0) 推荐(0)
摘要:传送门 此题非常裸,就是代码太多了,2519,115行。 没什么可说的,思路就是每个节点利用它的父亲建立主席树,查询的时候,sum[u]+sum[v]-sum[lca[u]]-sum[father[lca[u,v]]]就是左子树的大小,然后就没什么了。 代码:(100... 阅读全文
posted @ 2017-09-18 18:09 玫葵之蝶 阅读(139) 评论(0) 推荐(0)
摘要:字典树大家都知道吧,如果不知道可以看这里,我的模板写得还是不错的: 字符串–Trie树(字典树)接下来我们先看一个问题,通过这个问题来了解Xor这个运算的基本性质: 洛谷 P2420 让我们异或吧 题目大意:给定一棵带权树,多次询问两点之间边权异或和。 性质:a^x^... 阅读全文
posted @ 2017-09-18 12:12 玫葵之蝶 阅读(210) 评论(0) 推荐(0)
摘要:传送门 30分做法:(边权为0) 我一开始就在想30分做法,然后就想到了: 首先老套路,正着删边就是倒着加边。 并查集维护连通块大小,每次加边后将两个端点的size值乘起来累加答案。 20分做法: 当n#include#define ll long longusing... 阅读全文
posted @ 2017-09-16 17:15 玫葵之蝶 阅读(189) 评论(0) 推荐(0)
摘要:传送门 这个题我本来看出来了,也想到做法了,然后打了130行的代码,开始调,好不容易调过样例,然后就交; 第一次CE,改了继续交; 第二次10分,我当时就崩溃,我写了这么长时间,还不如30分无脑暴力??我就看题解,果然算法就是这样,然后,比对了好几个,也没看见什么错,... 阅读全文
posted @ 2017-09-10 18:39 玫葵之蝶 阅读(184) 评论(0) 推荐(0)
摘要:模板:割点 还是那本书,自己看。 吐槽一句:tarjan真的能干好多事儿啊QAQ 代码:#include#define ll long longusing namespace std;struct edge{ int to,next;}e[200001];int... 阅读全文
posted @ 2017-08-28 20:44 玫葵之蝶 阅读(128) 评论(0) 推荐(0)
摘要:模板:洛谷P3387 关于tarjan大神的算法我也只能抄抄代码了(滑稽) 其实《算法竞赛入门经典:训练指南》里有讲解,很详细。 代码:#include#define ll long longusing namespace std;vector G[10001];in... 阅读全文
posted @ 2017-08-28 20:41 玫葵之蝶 阅读(102) 评论(0) 推荐(0)
摘要:模板:洛谷P3385 由于DFS-SPFA可以在找到负环后及时退出,所以不会像BFS-SPFA那样TLE。 代码:#includeusing namespace std;inline void read(int &x){ x=0; int k=1; ... 阅读全文
posted @ 2017-08-28 20:37 玫葵之蝶 阅读(274) 评论(0) 推荐(0)
摘要:这是一种离线算法,但是时间超级快,是O(n+m)。 主要是dfs实现这个过程。 下面详细介绍一下Tarjan算法的基本思路: 1.任选一个点为根节点,从根节点开始。 2.遍历该点u所有子节点v,并标记这些子节点v已被访问过。 3.若是v还有子节点,返回2... 阅读全文
posted @ 2017-08-28 20:25 玫葵之蝶 阅读(95) 评论(0) 推荐(0)
摘要:日常再水一篇(逃题目背景小杉坐在教室里,透过口袋一样的窗户看口袋一样的天空。有很多云飘在那里,看起来很漂亮,小杉想摘下那样美的几朵云,做成棉花糖。题目描述给你云朵的个数N,再给你M个关系,表示哪些云朵可以连在一起。现在小杉要把所有云朵连成K个棉花糖,一个棉花糖最少要用... 阅读全文
posted @ 2017-08-23 21:28 玫葵之蝶 阅读(104) 评论(0) 推荐(0)
摘要:如题,原来听了怎么实现,一直没有写过,然后这是提高里会出现的,于是来补一下(好像我要补的还很多啊^_^) 给大家放一道题:洛谷 P3379 【模板】最近公共祖先(LCA) 温馨提示:这题卡常^_^ 代码:(具体看注释)#include#include#include#... 阅读全文
posted @ 2017-08-20 22:16 玫葵之蝶 阅读(120) 评论(0) 推荐(0)
摘要:题目描述设G为有n个顶点的有向无环图,G中各顶点的编号为1到n,且当为G中的一条边时有i 间的最长路径。输入输出格式输入格式: 输入文件longest.in的第一行有两个整数n和m,表示有n个顶点和m条边,接下来m行中每行输入3个整数a,b,v(表示从a点到b点有条边... 阅读全文
posted @ 2017-08-20 12:25 玫葵之蝶 阅读(103) 评论(0) 推荐(0)
摘要:以下为提高+难度。关于这个算法我不多做阐述,因为我说的肯定没有lrj大神说得好,大家可以看他的书–《算法竞赛入门经典》,那里有详细描述。 到了这种难度,极其建议大家去抄抄代码,过一遍手,比什么都强。 我也是这一遍抄完了,才感觉这两天的网络流明白了。下来就是代码。 co... 阅读全文
posted @ 2017-08-12 22:41 玫葵之蝶 阅读(211) 评论(0) 推荐(0)
摘要:以下内容为提高+难度。 首先,以一个问题来引入算法: 最大流问题,该问题描述如下: 管道网络中每条边的最大通过能力(容量)是有限的,实际流量不超过容量。 最大流问题(maximum flow problem),一种组合最优化问题,就是要讨论如何充分利用装置的... 阅读全文
posted @ 2017-08-12 00:42 玫葵之蝶 阅读(294) 评论(0) 推荐(0)
摘要:以下为普及+/提高- 难度 这篇我对Tarjan这个算法不作解释,不知道的戳这里. tarjan这个算法在OI的图论题中很常用它在O(n+m) 的时间内可以求出所有强联通分量,然后可以将每一个强联通分量(通常是一个环)缩成一个点。 然后就是一道模板题:洛谷 P2863... 阅读全文
posted @ 2017-08-10 20:58 玫葵之蝶 阅读(176) 评论(0) 推荐(0)