首页 > 其他分享 >CF1149D Abandoning Roads

CF1149D Abandoning Roads

时间:2023-10-13 17:45:52浏览次数:45  
标签:连通 Abandoning frac 复杂度 个数 Roads 做法 CF1149D

首先 \(a\) 边可以随便选。

显然,若某条 \(b\) 边的两端位于同一 \(a\) 连通块,一定不会被我们考虑。剩下的 \(b\) 边一定会将两个 \(a\) 连通块相连。

那么此时我们对于 \(b\) 边的约束是,位于一个环上的 \(b\) 边不能同时存在图中,即,我们的路径不能从当前连通块出发,经过至少一条 \(b\) 边后再回到当前连通块。

所以很自然的想法是最短路更新时记录当前已经到达的连通块集合,但显然当连通块个数过多时这个做法是寄掉的。此时请先将可能规模过大的做法作为候选做法,并记录在什么情况下会无法通过,如发现无法绕开,可以再回来优化候选做法。

考虑规模较小的连通块:

  • 对于大小为 \(1\) 的连通块,显然不会出现绕一圈再回来的情况。
  • 对于大小为 \(2,3\) 的连通块,由于出去绕一圈至少要经过两条 \(b\) 边,连通块内的直径最多只有两条 \(a\) 边,而 \(a<b\),所以也一定不会绕一圈。

故我们只需要记录大小 \(\ge 4\) 的连通块的经过情况,此时有效连通块个数至多只有 \(\frac{n}{4}\) 个,就可以状压了,状态总数为 \(O(2^{\frac{n}{4}}n)\),设 \(w=2^{\frac{n}{4}}n\),则 dijkstra 总时间复杂度为 \((w\log w)\)。

优化前请仔细分析复杂度瓶颈。

特定地,对于有关连通块个数的状压,可以讨论掉较小连通块来降低复杂度。

标签:连通,Abandoning,frac,复杂度,个数,Roads,做法,CF1149D
From: https://www.cnblogs.com/ydtz/p/17762702.html

相关文章

  • CodeForces 1149D Abandoning Roads
    洛谷传送门CF传送门考虑一条\(1\toi\)的路径是否在最小生成树上。称边权为\(a\)的边为轻边,边权为\(b\)的边为重边。轻边若不成环则一定在最小生成树上,因此先把轻边合并,这样形成了若干连通块。那么如果两点在一个连通块,它们只能通过轻边互达。同时,因为是树上路径,所......
  • CF671D Roads in Yusland
    1D8ya。设\(f_{u,i}\)表示覆盖了\(u\)子树并且向上覆盖到了深度为\(i\)的最小代价。考虑合并儿子\(v\):\[f'_{u,i}\gets\min\left(f_{u,i}+\min\limits_{j=1}^nf_{v,j},f_{v,i}+\min\limits_{j=1}^nf_{u,j}\right)\]相当于区间加,单点取\(\min\),区间求最小值。直接......
  • Roads in the North POJ - 2631 - 树的直径/树形dp
    题意:给出一棵无向树,求树的直径,即树上两点之间的最长距离分析:两种解法解法1:先任取一个点,找到距离该点最远的点u,再找到距离u最远的点v,那么u和v之间的路径就是一条直径。证明:只要找到了树的直径的一个端点,再从该点找到最远点就一定是直径的另一个端点。所以只需要证明第一次找到的......
  • CF671D Roads in Yusland 题解
    题目链接题目要求我们求出选出若干条路径并最小化花费,如果这是在链上,我们可以考虑直接枚举每条路径的右端点dp,那树呢?把路径剖分整个覆盖的集合就不一定连续了,没法dp,况且题目里给了很强的条件:路径一定是从孩子到祖先,硬转链用不上这个性质,貌似不太对。上述思考启发我们利用树的......
  • Constructing Roads
    ConstructingRoadsTimeLimit:2000/1000MS(Java/Others)    MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):17199    AcceptedSubmission(s):6529ProblemDescriptionThereareNvillages,whicharenumberedfrom1toN,andyou......
  • P3008 [USACO11JAN]Roads and Planes G
    P3008[USACO11JAN]RoadsandPlanesG思路按照分连通块的方法进行计算,并且如果不是本连通块的点,不能在现在的本次dfs中求解最小值。要一个一个的联通快进行标记。/*不能直接走disj的话,缩点的思想很重要首先尽量不要使用spfa进行走图,可能会卡对道路进行求连通块,对航线求度数......
  • Codeforces Round #Pi (Div. 2) E. President and Roads (最短路+强连通求割边)
    题目地址:codeforces#pi(DIV2)E题目很水。。就是先求两边最短路,然后把可能为最短路的边挑出来,然后判断是否yes只需要转化成无向图跑一遍tarjan,找出割边,割边就是yes,然后剩下的边就让它的值为最短路-1就行了,如果-1后变成了非正数,就是no.但是!!!居然卡spfa!!那是不是说cf以后就不......
  • UVa 11723 Numbering Roads (water ver.)
    11723-NumberingRoadsTimelimit:1.000secondshttp://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=24&page=show_problem&problem=2823Inmycountry,streetsdon’thavenames,eachofthemarejustgivenanumber......
  • CF-25C - Roads in Berland(水题)
    C-RoadsinBerlandCrawlinginprocess...CrawlingfailedTimeLimit:2000MSMemoryLimit:262144KB64bitIOFormat:%I64d&%I64u​​Submit​​​......
  • CF-25D - Roads not only in Berland(并查集或者搜索)
    D-RoadsnotonlyinBerlandCrawlinginprocess...CrawlingfailedTimeLimit:2000MSMemoryLimit:262144KB64bitIOFormat:%I64d&%I64u​​Submit​​......