【算法简介】

仙人掌就是把树上多连了一些返祖边,构成了一些环

根据仙人掌这个名字我们也可以较为形象的感受到图的形态

具体的,仙人掌分为点仙人掌和边仙人掌,定义分别为点/边最多属于一个环

之所以把这样的图形单独拿出来处理,就是因为它和树较为类似,有一些好的性质(相较一般图)

我们常用的处理办法是建立圆方树后,把原图转换为一个树进行计算

圆方树建立方法:

我们称原来图上的点为圆点,对于一个点双,我们把这个环上的边断开,新建立一个方点,把这个点双内所有的圆形点与方点相连,这样就构成了一个圆方树

根据仙人掌的性质,我们可以得到没有两个方点相连,特别的,如果对于一般的无向图建立圆方树,那么新树的所有边都是圆点和方点之间的

在建立好这样一个树之后,我们常见的操作是在圆方树上dp,点分治等等

一般来说,可以先考虑在普通树上如何处理,再特殊考虑方点的特殊性即可

【例题1】求仙人掌的最大独立集 BZOJ 4316.小C的独立集

sol.

【例题2】求仙人掌直径 BZOJ1023. [SHOI2008]cactus仙人掌图

sol.

【例题3】仙人掌两点间的最短路 BZOJ2125. 最短路

sol.

广义圆方树

【例题4】带修改,求无向图中两点之间所有简单路径上的最小权值

sol.

仙人掌问题(圆方树)相关推荐

  1. bzoj4564: [Haoi2016]地图 仙人掌的圆方树 莫队 分块

    bzoj4564: [Haoi2016]地图 Description 一天rin来到了一个遥远的都市.这个都市有n个建筑,编号从1到n,其中市中心编号为1,这个都市有m条双向通 行的街道,每条街道连接 ...

  2. 仙人掌与圆方树的学习 【模板】静态仙人掌

    题目链接 BZOJ 2125 最短路 圆方树 求一幅仙人掌图中,Q次询问两点最短路. 仙人掌问题,我们可以直接将原来的N个点缩点成为一棵生成树--圆方树. 这棵圆方树是怎样建立的呢,首先,我们看图: ...

  3. 洛谷 :P5236 【模板】静态仙人掌(圆方树模板 + 仙人掌最短路)

    题意很简单,在仙人掌图上求两点的最短路. 做法:需要用到圆方树 先来看看什么是圆方树:圆方树,就是由仙人掌图转化而来,树上分两种点:圆点和方点,圆点是仙人掌图上的点,方点是由仙人掌的环转化而来. 由于 ...

  4. 仙人掌相关问题的解法(1)-DFS树解决仙人掌DP问题,圆方树

    前言 有难度的仙人掌题在近几年也只是在国家集训队水平的比赛里才会出现. 不过,这不是说仙人掌对国集水平以下的选手意义不大: 首先,仙人掌暴力 DP 问题难度并不大,在省选. NOI 甚至 NOIP 中 ...

  5. [学习笔记]圆方树广义圆方树

    引入 偶尔,我们会遇到一些要在无向图/仙人掌上做的问题,这些问题如果在树上就会比较方便,那么我们就开始考虑能不能把原图等效成一棵树,然后就可以方便地乱搞了? 圆方树就是一种将无向图/仙人掌变成树的数据 ...

  6. [XSY] 绿色(圆方树、树形DP、树上差分)

    绿色 题意简述 题解 首先,每次修改完点权后,重新考虑一遍所有路径显然是不现实的,所以我们考虑求出经过每个点的两端同色的简单路径数,这样权值和容易统计和修改. 接下来分析仙人掌上的简单路径性质.一条简 ...

  7. 仙人掌圆方树学习笔记

    终于对仙人掌有了一点初步的理解. 仙人掌 仙人掌是什么? 仙人掌是一个无向图. 仙人掌有什么特点? 仙人掌的每条边只属于一个简单环. 下面是一个栗子 有什么用呢? 我们可以先用\(tarjan\)找出 ...

  8. P5236 【模板】静态仙人掌(仙人掌圆方树)

    无向仙人掌图 一般需要重构成 仙人掌有向树 然后我们 就考虑 圆点的 方点的不同讨论 这个题是查询两点间最短路 如果lca 是圆点 那么就是 d[a]+d[b]-2*d[lca] 如果是方点 我们需要 ...

  9. cactus仙人掌图【仙人掌圆方树+树形DP+单调队列】

    题目链接 BZOJ 1023 首先,圆方树是比较好想到的,维护直径,我们最方便的做法就是先让它变成一棵树,这里因为是仙人掌图,所以就用圆方树来构建. 再者,就是维护直径了,比较好想到的是非环上结点,就 ...

最新文章

  1. Docker创建Docker-Registry-私服
  2. Win10系列:JavaScript 的 WinJS库
  3. boost::hana::empty用法的测试程序
  4. 通过反射获取无参构造方法并使用
  5. 关于excel中的查找
  6. 《Simbody Theory Manual》
  7. LeetCode 655. Print Binary Tree (C++)
  8. Solr4.8.0源码分析(13)之LuceneCore的索引修复
  9. 深入学习java虚拟机第二版学习笔记
  10. HCIA-Storage 存储工程师学习笔记——1. 存储技术趋势
  11. 微信注册AppID失败
  12. python非法的标识符_Python标识符
  13. 2022idea报错快速解决方法图解:Invocation error: unable to read askpass response from ‘C:\Users\QKN\AppDat
  14. ffmpeg MP4 提取 MP3文件
  15. 印象笔记使用(一)——微信篇
  16. java实现关键字查询_SpringData关键字查询实现方法详解
  17. 天轰川 推荐的Javscript大收集 大集锦 收藏
  18. 业务员与客户沟通的礼仪
  19. 一些根本不用数据结构的题。。(积木大赛、焚风现象)
  20. python实现多句话翻译多语种(调翻译接口)

热门文章

  1. 计算机5大的控件的功能,7款顶级功能插件,每一款都堪称办公宝典!
  2. Unity 输出360图片
  3. 镜头矫正 棋盘矫正_矫正强迫,而不是症状
  4. 集群运维:All datanodes DatanodeInfoWithStorage[10.21.131.179:50010,DS-6fca3fba-7b13-4855-b483-342df8432e
  5. 手把手教你完成微信H5支付
  6. CentOS7下安装CDH,clouderamanager,hadoop
  7. 读锁有什么用?读为什么要加锁?
  8. 20145330 《网络对抗》PC平台逆向破解:注入shellcode 和 Return-to-libc 攻击实验
  9. 服务器网络适配器多路传送器协议,win8系统开启Microsoft网络适配器多路传送协议的具体方法...
  10. 游戏3D美术设计师是什么?