首页 > 其他分享 >耳分解小记

耳分解小记

时间:2024-02-10 11:44:05浏览次数:27  
标签:连通 有向图 一个 无向 分解 dp 小记

Ear Decomposition

耳:对于无向图 \(G = (V, E)\) 和 \(V\) 的一个子集 \(S\),定义一个耳为一个顶点序列 \(a_1\sim a_m\),满足 \(a_2\sim a_{m - 1}\in V - S\) 互不相同且和 \(a_1, a_m\) 不同,且 \(a_i\) 和 \(a_{i + 1}\) 之间均有连边。其中 \(a_1\neq a_m\) 时称为开耳。

耳分解:将图分解为一个子图序列 \(G_0, G_1, \dots, G_t\),满足 \(G_t = G\),\(G_0\) 是一个环,\(G_i\setminus G_{i-1}\) 构成一个耳。

有向图的定义类似。

不加证明地给出两条结论:

  • 有向图强连通 \(\Leftrightarrow\) 存在有向图耳分解。
  • 无向图边双连通 \(\Leftrightarrow\) 存在无向图耳分解。

注意到耳的结构是较为简单的,这给我们做题时带来了拆解结构这一不同角度。

GP of Korea, C. Economic One-way Roads

倒做耳分解的过程,从 1 开始一个耳一个耳地加入,设 \(f(S)\) 表示目前点集为 \(S\) 的内部定向边权最小值。转移的时候枚举 \(T(T\cap S = \varnothing)\),预处理 \(T\) 作为一个耳的最小代价,时间复杂度 \(\mathcal O(3^n n^2)\)。不好过ww。

考虑另一种 dp 方法,从耳的构造过程出发。设 \(dp(S, u, v)\) 表示当前点集为 \(S\),目前的耳构造到点 \(u\),终点是点 \(v\) 的最小代价。转移的时候枚举中转点 \(w\notin S\),计算贡献即可。

比较难受的是,由于是边的定向,\((w, v)\) 和 \((v, w)\) 不能同时出现,所以还要记录一下当前是不是刚从 \(v\to w\) 走出去这样。时间复杂度 \(\mathcal O(2^n n^3)\)。代码上的细节是,一开始要先把所有边定向,后续有需要再反过来。

P5776

基本一样,就是把条件从有向图强连通换成了无向图边双联通。

类似地做一个 dp 即可。状态设计都是一样地。没有写代码,看了看 ix35 聚聚的题解代码,不同的一个细节是 \((u,v)\) 之间有重边的话要保留前 2 小的边,原因显然。

标签:连通,有向图,一个,无向,分解,dp,小记
From: https://www.cnblogs.com/663B/p/18012771

相关文章

  • 记录关于大质数分解,yafu的报错
    对于大数2071429833816044974954536074368801884287727405454085209645948528393680234127136376615797611252503400431993805403493488086095696658505168448366253578062167331677484261470172644587063010919601667672518341287987046343227762991666913049404040373329559365......
  • 问题:糖原合成的关键酶是(),糖原分解的关键酶是()
    问题:糖原合成的关键酶是(),糖原分解的关键酶是()参考答案如图所示......
  • Irrlicht 小记
    1.irrlicht名称空间下包含corescenevideoiogui2.irrlicht的事件可以监听页面事件、鼠标事件、按键事件——但是具体响应根据程序结构有所区分(例子中的按键响应处理部分扔到了引擎循环部分;而界面响应通过记录场景指针,直接在自定义场景响应类内进行的处理)3.irrlicht......
  • supervisor命令小记
    查看已启动服务状态supervisorctlstatus查看某个服务状态supervisorctlstatus进程名启动某个进程supervisorctlstart进程名重启某个进程supervisorctlrestart进程启动名停止某个进程supervisorctlstop进程名修改或添加某个服务配置文件后,使其......
  • Python时间序列分析苹果股票数据:分解、平稳性检验、滤波器、滑动窗口平滑、移动平均、
    全文链接:https://tecdat.cn/?p=33550原文出处:拓端数据部落公众号什么是时间序列?时间序列是一系列按时间顺序排列的观测数据。数据序列可以是等间隔的,具有特定频率,也可以是不规则间隔的,比如电话通话记录。在进行投资和交易研究时,对于时间序列数据及其操作要有专业的理解。本文......
  • 动态树直径小记
    本文采用BY-NC-SA协议发布。要求:给你一棵树,边带权,每次断边连边(保证合法且仍是树),在线求每次修改后的直径。LCT(咕)TopTree拆边,然后用negiizhao论文里的方法维护。实现时注意,翻转标记会影响合并的信息,要swap一下。#include<iostream>#include<unordered_map>#includ......
  • 优维全面可观测产品能力分解②:变更可观测
    上周,我们推出了优维全面可观测能力介绍的系列性文章的第一篇:架构可观测。优维架构可观测是从系统架构的视角来呈现链路与服务的状态数据,点击可回看:架构可观测文章。本周,我们将推出本系列性文章的第二篇:变更可观测。故障60%到80%是由于变更引起的。对于生产环境的稳定性,是各个行业......
  • 【小记】Docker容器间SSH公钥自动交换实现免密登录的一次尝试
    咋想到这茬了最近开始忙毕设的事儿了,想部署个伪分布式的Spark+Hadoop集群来进行测试。思来考去,最终咱把目光放在了Docker上。盘了两天,发现这玩意意外的有趣,镜像构建好后开箱即用,省去了些配置环境的成本。不过呢,在配置Hadoop的时候我发现了一个问题——Hadoop分布式搭建要求各......
  • 在.framework框架下的winfrom中使用Castle.DynamicProxy实现AOP问题小记
    1.需求:为项目中通讯PLC模块实现AOP,实现统一的日志打印,参数校验,方法执行时间统计2.问题:①现有项目没有IOC容器,没法使用部分AOP库的方法注册到IOC,(注:如果要实现IOC对现有代码改动大,并且AOP只是针对部分模块实现)②要在尽量小的代码改动下实现针对以上问题选择使用Castle.DynamicProx......
  • 【小记】MSMF 框架开发 UVC 摄像头如何正确设置 MF_MT_SUBTYPE
    简单说一下:IMFSourceReader有两个可以获取 IMFMediaType对象的接口,分别是 GetNativeMediaType与 GetCurrentMediaType。初始化时调用 GetCurrentMediaType获得的IMFMediaType对象(此时为硬件默认情况下自动选择的对象)再进行修改是不能用于SetCurrentMediaType的,即......