首页 > 其他分享 >图论

图论

时间:2022-11-16 22:14:50浏览次数:69  
标签:图论 前置 点权 路径 次大值 dp 欧拉

图论

CF76A Gift

思路

因为有两个变量,所以先按照其中一个 \(g\) 排序,就像图海说的两只鸟先拍死一个再说。

设生成树边集为 \(T\) ,将排序后的边 \(i\) 加入时, \(g_{max}\) 已经确定,所以可以直接将 \(i\) 暴力插入,然后排序求一次最小生成树,将无用的边删去。

时间复杂度 \(O(nm\log n)\)

优化

发现边集 \(T\) 中的边已经按照 \(s\) 升序排列,故直接暴力插入

时间复杂度 \(D(nm)\)

P4180 [BJWC2010] 严格次小生成树

先求出最小生成树,然后做一下倍增,维护最大值和严格次大值。

对于每一条非树边,将其加入图中,删去这条边的两端点到 \(LCA\) 的边的最大边(若最大边边权与非树边相等则删去严格次大值,若没有严格次大值,则跳过此非树边)

最后对新树的边权和求一下最小值,即为所求。

时间复杂度 \(O(m\log n)\)

CF1076D Edge Deletion

前置:最短路径树

不妨直接从 \(1\) 开始跑 \(DJSL\) ,边跑边生成最短路径树,直到边数大于 \(k\) 或者 \(DJSL\) 跑完了 退出就可以了。

CF1108F MST Unification

在这里哦

CF1650G Counting Shortcuts

前置:分层图

呜呜呜,这个题的题干不知怎么了,看错了好多次,QWQ

我们将图按照距离分层,发现如果是最短的话,那么路径上只会有从 \(i层->i+1层\) 的路径,而如果是次短的话,就回恰好有一条在同一层内的路径。

所以设 $dp_{i,0/1} $ 表示到 \(i\) 的最短路径数量和次短路径数量

对于一条同层边 \((u,v)\) 有 \(dp[v][1]+=dp[u][0]\)

对于一条跨层边 \((u,v)\) 有 \(dp[v][1]+=dp[u][1],dp[v][0]+=dp[u][0]\)

发现 \(dp[v][1]\) 可能在需要被转移时还没有算完,于是先算同一层的 \(dp[v][1]\) 再算跨层的 \(dp[v][1],dp[v][0]\)

CF1737D Ela and the Wiring Wizard

在这里哦

P2149 [SDOI2009] Elaxia的路线

正解还没看呢,唔,手上只有一个自己写的 \(n^3\) 玄学算法A掉了这个题。

大概就是将两组最短路算出来,然后先将第一个人的最短路的边全部处理出来,处理出其中的每一个点到之前的点的距离。

对于第二组,也是先找一个最短路的边。对于一个点,处理出可以到达这个点的最短路上的点,然后看在第一个人处理出来的距离中有没有这两个点,然后取个最大值即可。

注意哦,以上都为单向边。

正解的话,先鸽了吧。

P1341 无序字母对

前置:欧拉路

巧了,这个前置我似乎不会,等我学学。

嗯,好了,可能会了,开始吧!

直接将两个字母连边,然后先判是否有欧拉路

判断方法:

  1. 无向图欧拉路

    其中度数为奇数的点的数量不是 \(0\) 就是 \(2\) ,否则无解。

    如果为 \(2\) 则这两点之一取小的作为起点

  2. 有向图欧拉路

    图中恰好存在 \(1\) 个点出度比入度多 \(1\)(这个点即为 起点 \(S\)),\(1\) 个点入度比出度多 \(1\)(这个点即为 终点 \(T\)),其余节点出度=入度。

  3. 有向图欧拉回路

    所有点的入度=出度

  4. 无向图欧拉回路

    所有点的度数都是偶数

注意一下记录答案,必须要倒序,在这里有详解,再此感谢$dalao $$@huainan_marquis $

P8201 [传智杯 #4 决赛] 生活在树上(hard version)

思路

可以发现,如果在 \(a,b\) 间的简单路径上有一个点的点权为 \(dis_{a,b} ⨁ k\) ,则成立,反之则不存在这种点。

于是问题转化:问树上 \(a,b\) 简单路径上是否有点的点权为 \(C\)

这是一个经典问题,对点权离散化,将询问离线到 \(a,b,lca(a,b)\) 上,开个桶记录一下就可以了。

注意,如果 \(lca(a,b)\) 的点权为 \(C\) 的话,要特判一下。

CF427C Checkposts

大水题,只用记录一下每个环里面最小值和其对应的点的个数即可

所以一个 \(tarjan\) 和乘法原理即可

标签:图论,前置,点权,路径,次大值,dp,欧拉
From: https://www.cnblogs.com/LQX-OI/p/16897681.html

相关文章

  • 图论做题记录
    CF242D题意:初始有一个\(n\)个点的图,依次添加\(m\)条边,对每次加边后需要回答满足每个点的度数都大于等于\(k\)的导出子图的最大点数。考虑将加边操作改为删边操作,关......
  • [图论]floyd统计最小环个数
    使用floyd可以求解最小环问题.单纯需要求出最小环长度,方法显而易见最小环-OIWiki(oi-wiki.org)然而,如果需要统计最小环的个数,就比较麻烦.记\(cnt_{i,j}\)表示从\(i......
  • PTA 21级数据结构与算法实验4—图论
    目录目录7-1邻接矩阵表示法创建无向图7-2邻接表创建无向图7-3图深度优先遍历7-4单源最短路径7-5列出连通集7-6哈利·波特的考试7-12关键活动7-13任务调度的合理性7......
  • 几个图论 trick
    歪歪球/se总结几个遇到过的图论trick.模拟图论算法面对图论中的问题(又或是其他方向的问题),在我们手中有的工具是Kruskal,Borůvka,Tarjan,Kosarajo甚至于dfs,bfs,......
  • DTOJ 2022.11.02 图论专题
    题单P1117无序字母对P5240「NOIP2020」排水系统P4042「NOIP2018」旅行P5169「CSP-S2020」函数调用P4563「NOIP2017」逛公园题解A题面:给定\(n\)个各不相同的......
  • 2022/11/11万魔的图论
    算法学习到了图论的位置了,虽然之前有学习过图论的一些小知识,但是确实对我来说他确定还有一定的难度。不过我相信我这次一定可以将图论AK。学习吗,不逼自己一把你是不会知道......
  • 图论好难啊
    图论好难啊,什么树啊图啊,树的直径,最短路径啊,怎么求啊,这算法怎么是对的啊???好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊好南啊......
  • 提高课图论总结
    Floyd求无向图最小环问题https://www.acwing.com/problem/content/346/floyd是典型的插点算法,每次插入点k,为此,在点k被[插入前]可计算i-j-k这个环即此时中间节点为:1~k-1,......
  • 20220528 集训:图论
    postedon2022-05-2812:02:29|under题解|source感谢vjudge.net提供技术支持。CF771ABearandFriendshipCondition题意给定\(n\)个点\(m\)条边的图,描述......
  • Codeforces - 1391C - Cyclic Permutations(思维 + 组合数学 + 数论 + 图论、*1500)
    1391C-CyclicPermutations(⇔源地址)目录1391C-CyclicPermutations(⇔源地址)tag题意思路AC代码错误次数:0tag⇔思维、⇔组合数学、⇔数论、⇔......