【笔记】圆方树

news/2024/12/25 2:32:59/文章来源:https://www.cnblogs.com/CloudWings/p/18306417

【笔记】圆方树

1 定义

仙人掌: 所有边都至多被包含在一个环中。

image


2 构建

给一个点和它所在的所在的所有点双连边,同时,我们定义方点为虚点(即表示点双的点),圆点为原图上的点。

注意,是所有点双,所以一个割点会连向多个点双。同时,由定义得,该图有且仅有圆方边,因为圆圆边可以继续缩点。

既然是点双,那么我们就用 tarjan 实现即可。同时,在图不连通的时候,构成的是圆方森林,此时每一个连通子图就是一个圆方树,所以我们就考虑原图的连通子图即可。

然后呢,类似地,我们可以像求强联通分量一样,选择一个代表结点,作为此时的代表结点。对于这个点双连通分量的缩点,我们可以容易发现此时 u 即为这个点双联通分量的代表点,并且 u 和 v 属于同一个点双联通分量。

2.1 广义

广义圆方树的一个性质:所有的圆点的父亲一定是方点。

void tarjan (int u) {st.push(u), low[u] = dfn[u] = ++_dfn;for (int v : G[u])if (!dfn[v]) {tarjan(v);low[u] = min(low[u], low[v]);if (low[v] >= dfn[u]) {++_id; static int t;while (t != v)  // 这个地方 do-while 或 while 都可t = st.top(), st.pop(),tr[_id].push_back(t),tr[t].push_back(_id);tr[_id].push_back(u),tr[u].push_back(_id);}} elselow[u] = min(low[u], dfn[v]);
}

2.2 狭义


3 应用 - 原方树上 DP

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/745019.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

缓存穿透、缓存击穿、缓存雪崩的场景以及解决方法

缓存穿透、缓存击穿、缓存雪崩的场景以及解决方法都是缓存惹的祸 在项目开发中,我们的数据都是要持久化到磁盘中去,比如使用 MySQL进行持久化存储,但是呢由于流量越来越大,查询速度也逐渐变慢了起来,于是我们决定!使用缓存!然而使用缓存导致会经常面临三座大山!缓存穿透!!…

CSS Case Insensitive Attribute Selector All In One

CSS Case Insensitive Attribute Selector All In One CSS 大小写敏感的属性选择器CSS Case Insensitive Attribute Selector All In OneCSS 大小写敏感的属性选择器/* case sensitive, only matches "case_sensitive" */ [class=case_sensitive] {background: pink;…

玄机-第一章 应急响应- Linux入侵排查

玄机-第一章 应急响应- Linux入侵排查 简介 账号:root 密码:linuxruqin ssh root@IP 1.web目录存在木马,请找到木马的密码提交 2.服务器疑似存在不死马,请找到不死马的密码提交 3.不死马是通过哪个文件生成的,请提交文件名 4.黑客留下了木马文件,请找出黑客的服务器ip提交…

关于Win10 Penetration系统内置kali虚拟机WSL报错的解决方法

关于Win10 Penetration系统内置kali虚拟机WSL报错的解决方法: Win10 Penetration下载地址:https://pan.baidu.com/s/16b4_j9wuK_81G4uJKhNZyA?pwd=bj7t 提取码:bj7t Win10 Penetration是什么? Windows10 Penetration Suite Toolkit within Kali Linux是一个集成了各种渗透…

JMeter上传文件接口教程—01

Content-Type: multipart/form-data; 格式步骤: 1、添加HTTP Request、填写好HOST、URL等信息,这一步如果没有接口文档参照,可以去F12或者Fiddler抓包,我们这里重点讲没有接口文档的情况下如何做, 如果除了文件以外,还有表单数据,还是需要放在Parameters里边的。 2、上传…

如何在 Android 项目中应用 OpenCV?

如何在 Android 项目中应用 OpenCV? 流程总览导入 OpenCV 库 在 Android 项目中配置 OpenCV 创建人脸识别器 识别并裁剪人脸区域 显示裁剪后的人脸图片具体实现 导入 OpenCV 库先去 OpenCV 官网下载 OpenCV 的 Android 库并解压:https://opencv.org/releases/ 在项目中点击 f…

Android 开发学习笔记

Android 开发学习笔记 基本概念 Android 应用程序由一些零散的有联系的组件组成,通过一个工程 manifest 绑定在一起。在 manifest 中,描述了每一个组件以及组件的作用,其中有 6 个组件,它们是 Android 应用程序的基石。Android 有四大组件(也有说六大组件的,外加 Intent …

Synergy键鼠跨屏幕同步

Synergy 在多台计算机之间使用单个键盘和鼠标,使用一台计算机的键盘、鼠标或触控板来控制附近的计算机,并在它们之间无缝工作 支持Windows Mac Linux 和树莓派,解放桌面空间,减少操作复杂性,多屏操作神器没错了小记 Synergy 在多台计算机之间使用单个键盘和鼠标,使用一台…

基于粒子群优化的图像融合算法matlab仿真

1.程序功能描述基于粒子群优化的图像融合算法,通过PSO优化,得到最优的图像融合权值参数,将彩色模糊图像和清晰的灰度图像进行融合获得彩色清晰图像。2.测试软件版本以及运行结果展示 MATLAB2022a版本运行 3.核心程序for it = 1:Ites(ijj)itfor i=1:Popu% 更新速度 ptls(i)…

一起学RISC-V汇编第3讲之寄存器

寄存器是处理器中最常用的处理单元,RISC-V指令的操作数除了立即数就是寄存器。 RISC-V指令集包含了多种不同类型的寄存器,用于不同目的和功能: 对于rv32imafd架构而言,包含如下寄存器:通用寄存器:32个通用整数寄存器,分别标记为x0-x31,如果是fd扩展,还有32 个独立的浮…

第三期 Plugins Function Calling

大模型的缺陷:没有最新消息:训练周期长且昂贵,GPT3.5/4的知识截至2021-9 没有真逻辑:表现出的逻辑和推理,是训练文本的统计规律,不是真正的逻辑Plugins 订机票、数学计算、日程提醒... 插件选择&使用插件的原理 通过prompt判断是否应该调用插件失败使用门槛高:用户需…

第四期 AI 编程

目标如何用 AI 辅助编程,提升工作效率 如何用 AI 快速应用和学习新技术,扩展职业边界 通过 AI 编程,洞察 AI 对各个行业的影响趋势产品与技术的联通+业务视角 =AI 全栈工程师 AI 编程 使用 AI 编程(编程目前是大模型能力最强的垂直领域),除了解决编程问题以外,更重要是建…