![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
----------图论~树论----------
VanishD
気付かないうちにオトナになって,绮丽な嘘 口に出来るほど。
展开
-
[bzoj5077][uoj198][ctsc2016]时空旅行【线段树】【dfs序】
【题目链接】 http://uoj.ac/problem/198 https://www.lydsy.com/JudgeOnline/problem.php?id=5077 【题解】 先求出每个星球在dfs序上的对应区间,虽然有的星球不止一个区间,但区间的总数是O(N)O(N)O(N)级别的。然后把这些区间标记在线段树上。显然每个星球可以看做斜率优化中的一条直线,所以对于线段树...原创 2018-06-04 14:09:19 · 452 阅读 · 0 评论 -
[bzoj3786]星系探索【欧拉序】【splay】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=3786 【题解】 用splay维护欧拉序,修改相当于将一段区间移到另一个位置。子树加就是区间加,查询链的答案相当于一段前缀和,都是splay基本操作。 时间复杂度O(M∗logN)O(M∗logN)O(M*logN) 【代码】/* - - - - - - - ...原创 2018-05-31 19:40:44 · 313 阅读 · 0 评论 -
[bzoj1598][Usaco2008 Mar]牛跑步【k短路】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1598 【题解】 A*模板题。 【代码】/* - - - - - - - - - - - - - - - User : VanishD problem : [bzoj1598] Points : K-th shortest...原创 2018-06-13 21:29:35 · 217 阅读 · 0 评论 -
[bzoj1073][SCOI2007]kshort【K短路】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=1073 【题解】 重点:我没有cheat 题意非常简单,就是求aaa到bbb的第k大简单路径。普通的A*算法并没有可靠的复杂度保证。这里介绍一种有复杂度保证的Yen算法。 先给一个简单的概括:首先求出aaa到bbb的最短路,加入优先队列中。然后考虑每次将一条最...原创 2018-06-13 19:01:55 · 466 阅读 · 0 评论 -
[bzoj5293][Bjoi2018]求和【最近公共祖先】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=5293 【题解】 大力O(N∗K)O(N∗K)O(N*K)预处理,然后每次询问时倍增求LCA。 这能算省选题? 【代码】# include <bits/stdc++.h># define ll long long# define...原创 2018-05-30 14:54:15 · 296 阅读 · 0 评论 -
[bzoj5338][loj2557][TJOI2018]xor【可持久化线段树】【dfs序】【欧拉序】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=5338 https://loj.ac/problem/2577 【题解】 可以开两棵可持久化权值线段树,一棵记dfs序维护子树信息,另一棵记欧拉序维护链信息。在开先段树的时候左边的二进制首位为000,右边为111。 对于一次询问,贪心向下选取就行了。 时...原创 2018-06-13 10:59:20 · 333 阅读 · 0 评论 -
[bzoj2595][Wc2008]游览计划【斯坦纳树】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=2595 【题解】 斯坦纳树模板题。 记fi,j,kfi,j,kf_{i,j,k}表示当前最小生成树的根在(i,j)(i,j)(i,j),连在这棵树上的关键点(景点)的状态为kkk,(k是一个二进制数,表示关键点是否与根连通)。 转移分为当前层转移和跨层转移,当...原创 2018-06-20 20:52:20 · 212 阅读 · 0 评论 -
[bzoj3551][ONTAK2010]Peaks加强版【可持久化线段树】【最小生成树】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=3551 【题解】 这一题要求强制在线,所以要维护历史版本的信息。 对于每条在最小生成树上的边(u,v),将u,v跳到所在的最高父亲,然后不是直接合并,而是新建一个点,做一次可持久化线段树合并,把(u,v)的父亲设为这个点。对于每个询问,从它开始向上跳,显然向上跳的困...原创 2018-05-29 21:02:01 · 422 阅读 · 0 评论 -
[bzoj3252]攻略【dfs序】【线段树】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=3252 【题解】 一个显而易见的贪心:每次一定取价值和最大的路径。 所以我们可以把每个点的权值设为它的到根的路径的价值和,然后按dfs序排好序后存入线段树种中。修改时,从叶节点开始往上走,每次把子树的所有点的权值减去它的价值(dfs中的一段区间)。直到遇到一个已经被...原创 2018-04-20 22:22:25 · 186 阅读 · 0 评论 -
[bzoj5329][loj2562][Sdoi2018]战略游戏【点双连通分量】【虚树】【圆方树】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=5329 https://loj.ac/problem/2562 【题解】 首先用求点双的方法建出圆方树,那么答案就是虚树中没有被用到的圆点数。 关于如何求点双(圆方树):如果一个点的low不小于父亲的dfn,那么这个点就是割点,新建一个方点。一直弹栈直至把这个...原创 2018-06-04 17:04:25 · 321 阅读 · 0 评论 -
[bzoj3669][uoj3][Noi2014]魔法森林【link-cut-tree】
【题目链接】 https://www.lydsy.com/JudgeOnline/problem.php?id=3669 http://uoj.ac/problem/3 【题解】 首先我们可以从小到大枚举a的最大值,然后维护b的最小生成树。显然需要用到lct,然而lct并不能维护边信息,所以我们需要把每条边变成一个点并向两头连边。每次新加入一条边(u,v)(u,v)(u,v),...原创 2018-06-04 14:37:25 · 201 阅读 · 0 评论 -
[uoj389][UNR #3]白鸽【欧拉回路】【射线法】【费用流】
【题目链接】 http://uoj.ac/problem/389 【题解】 首先存在欧拉回路的条件是所有非孤立点都与一号点连通,并且每个点的度数都是偶数。 一个简单的想法,把每条边绕原点旋转在的角度记为这条边的费用(如果是负的就把这条边反向),我们先把所有的费用都加在一起作为初始的答案。那么显然会有一些点的度数不符合条件。考虑费用流,对于一条边(u,v)(u,v)(u,v)我们...原创 2018-07-15 14:59:53 · 482 阅读 · 0 评论