首页 > 其他分享 >冗余路径

冗余路径

时间:2024-02-10 15:22:06浏览次数:19  
标签:连通 子树 边双 sum 路径 节点 冗余 分量

这道题目是一个模型:给连通的无向图加边,使得无向图没有桥(即变成边双连通分量),最小化加边数

因为边双连通分量本来就没有桥,所以我们考虑对整个图求一遍边双连通分量(使用 tarjan 算法),然后将边双连通分量缩为一个点考虑。那么缩完点后得到的图一定是一棵树(因为图中不可能存在环)

然后要加的边的个数就是\(\lceil\frac{cnt}{2}\rceil\),其中\(cnt\)是图中度数为\(1\)的点数

先证这是下界,每一次操作顶多使度数为\(1\)的点消失两个,考虑一下最后的细节问题即可

然后构造一下:

直接考虑节点数量在\(2\)以上的情况,我们任选一个度数大于\(1\)的点(一定找得到)作为根节点,然后这棵树就长这个样子:

每个子树都有若干个叶子,数目设为\(a_1\),\(a_2\),...,\(a_n\)(假设已经从大到小排好序了)

我们每次选择不同的子树的两个叶子连边,相当于把序列{\(a\)}中选两个数\(-1\)

先假设\(\sum_{i=1}^{n-1}a_i≥a_n\)

我们每次操作都让\(a\)中最大的数和最小的数进行减一(中间注意动态调整),那么最后要么全部变为\(0\),要么还剩下一个\(1\)

对于前面一种情况,此时就已经符合题意了,对于后面一种情况,此时在让这个叶子节点与根节点进行连边即可,不难算出添加的边数是以上结论给出的式子

如果\(\sum_{i=1}^{n-1}a_i<a_n\)怎么办?

此时,我们换根,让\(a_n\)所对应的子树的顶点作为根,直到对应的序列满足\(\sum_{i=1}^{n-1}a_i≥a_n\)

证毕

这种每次按照单位数量选两个减的好像都是让最大的和最小的减,然后中途动态调整

标签:连通,子树,边双,sum,路径,节点,冗余,分量
From: https://www.cnblogs.com/dingxingdi/p/18012894

相关文章

  • 最短路径
    最短路算法主要有Floyd,Dijkstra,Bellman-Ford,SPFA,Jahnson,A*这六种算法。Floyd用来处理全源最短路,可以处理负边权。时间复杂度为\(\mathcal{O}(N^3)\)。Dijkstra用来处理单源最短路,不能处理负边权。时间复杂度最优为\(\mathcal{O}{(M\logM)}\)。Bellman-Ford用来处理单......
  • C#中获取进程当前路径各种方法的测试
    C#中获取进程当前路径各种方法的测试在CSharp中,获取当前进程的路径有很多种方式。同一个api在不同的运行和发布方式中,又会产生不同的效果。下面我用代码来测试一下效果,运行环境是:Windows10,.Net8。测试程序为放在``D:\的CurrentPathTest`目录。//不同的发布及运行方式//1.......
  • 断网测试3-彩票+路径数量
    第1题   彩票 查看测评数据信息每张彩票都印有6位数字,如果彩票的前三位数字的和恰好等于后三位数字的和,那么该彩票是"幸运彩票".输入格式 第一行,一个整数n,表示有n张彩票。1<=n<=1000。接下来有n行,每行是都印有6位数字。 输出格式 共n行,如果是"幸运彩票"输......
  • Python 获取相对路径
    想要获取当前文件的路径,通常我的做法是os.path.abspath(__file__)如果想要获取当前文件的所在文件夹,通常的做法是os.path.dirname(__file__)但是更多的时候,我想获取当前所在文件的父目录的父目录,做法可以是os.path.dirname(os.path.diranme(__file__))或path=os.path......
  • 次短路径问题
    一、问题描述P2865[USACO06NOV]RoadblocksG二、问题简析如果求最短路径,我们很自然会想到\(Dijkstra\)。但是,这道题要求的是次短路径。记到\(u\)的最短路径为\(d_1[u]\),到\(u\)的次短路径为\(d_2[u]\)。则\(d_2[v]=d_1[u]+e(u,v)\)or\(d_2[u]+e(u,v).w\)......
  • 修改SQLServer的TEMPDB路径
    数据库服务器上,SQLServer安装在C盘,导致C盘空间不足,每次都清理也释放不出来多少,经检查发现,安装目录下的tempdb.mdf有10多个G,随寻思把tempdb迁移到别的盘符。具体操作步骤如下:1、先在E盘建个目录tempdb;2、打开sqlserver管理界面,执行以下脚本ALTERDATABASEtempdbMODIFYFILE(N......
  • iis 配置后启动报不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种
     错误  配置后启动报不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny" 处理如图 C:\windows\system32\inetsrv\appcmdunlockconfig-section:system.webServer/handlersC:\windows\system3......
  • raid 磁盘冗余阵列
    什么是raid磁盘冗余阵列这是由多块独立磁盘(多为硬盘)组合的一个超大容量磁盘组。大白话的解释磁盘冗余阵列,就是将很多块硬盘组合成一个整体,不同的RAID级别,可以实现不同的功能如加速数据读写、如实现数据备份。raid技术的作用-提高IO能力,磁盘并行读写-提高耐用性,磁......
  • 微信小程序 Path2D 不支持 svg 路径的解决办法
    问题开发一个微信小程序项目的时候需要用到Path2D这个对象,但是发现小程序的Path2D对象不支持实例化的时候直接传入'svgpath',导致下面的代码运行的时候报错(浏览器中可运行)#其它代码(省略)...//核心代码letp=newPath2D("M1010h80v80h-80Z");//微信小程序中会......
  • 最短路径问题
    一、Bellman-Ford算法Q:有一张有\(n\)个点、\(m\)条边的有向图,可能存在重边、负边和自环,但不存在负环,求起点\(s\)到每个点的最短路径。1.1算法简析记图为\(G\);\(G[u]\)表示以\(u\)为起点的所有边的集合;\(e(u,v)\)表示\(u\)到\(v\)的某一条有向边(\(e(u,v)\inG[......