
图论
mis_deer
Make_myself.
展开
-
[HDU 1811] Rank of Tetris (并查集+拓扑排序)
Description自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球。 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜,定时更新,名堂要比福布斯富豪榜还响。关于如何排名,这个不用说都知道是根据Rating从高到低来排,如果两个人具有相同的Rating,那就按这几个人的RP从高到低来排。终于原创 2015-11-16 16:59:57 · 330 阅读 · 0 评论 -
[HDU 5409] CRB and Graph (桥+性质)
HDU - 5409 当一条边是桥的时候,输出两边双联通分量中各一个点 要求输出的第一个点序号小于第二个点,,且第一个点尽可能大, 满足前一个条件的情况下,第二个点尽可能小求桥没啥好说的,直接 Tarjan走起,但是输出就比较厉害了首先如果桥边被割掉了,两边最大分别是 max0, max1 如果 max0>max1 ,那么输出 max1 max1 +1,否则输出 max0, ma原创 2016-07-18 09:09:48 · 340 阅读 · 0 评论 -
[HDU 5296] Annoying problem (DFS序性质+LCA)
HDU - 5296 一棵树上有若干个点,每条边有一个边权 给一个初始为空的集合,每次向集合内添加一个点或者删除一个点 问每次操作结束后,将集合内所有点连起来的边权和为多少假设集合内已经有一些点,那么再加一个点所增加的边权 将会是这个点到某一条链的距离但是这条链不能随便挑选,否则可能会经过已经选择的边 挑选策略就是,找到集合内dfsdfs序比当前点大和小的两个点组成的链 换句原创 2016-07-19 09:32:01 · 810 阅读 · 0 评论 -
[LightOJ 1321] Sending Packets (SPFA+概率DP)
LightOJ - 1321 给定一张无向图,每条边都有一个通过的概率 如果无法通过,那么就要回到起点重新出发 从起点到终点的时间固定为 KK,如果成功到达, 又需要额外花费 KK的时间,问走 SS次的最小期望时间首先可以跑一遍SPFA求出一次通过的最大概率 pp 设跑一次的最小期望时间为 EE,E=p×2K+(1−p)×(E+2K)E = p\times 2K + (1-原创 2016-07-31 12:08:30 · 530 阅读 · 0 评论 -
[Codeforces 231E] Cactus (环缩点+LCA)
Codeforces - 231E 给定一个仙人掌图,问从 x点走到 y点有多少条路径 两条不同的路径必须每一条边都不相同写了这个图论,相当于写了一个模拟 本来都是贴板的事,但是到仓库一看我并没有板 可能当初觉得很简单就没留板…… 所以全程手写了,而且实际上我对图论并不是很熟 幸好不是在赛上,不然手速肯定被完爆x到 y的路径,经过每个环的时候,就有两种走法 做法就是用边双联通分原创 2016-08-08 11:47:00 · 514 阅读 · 0 评论 -
[HDU 5823] color II (状压+暴力枚举子集)
HDU - 5823 给定一个 NN个点的图, 求它的每一个子图的最小染色数 其中 N≤18N \le 18没想到枚举子集居然是 3N3^N次方的 没想到 3N3^N也能过…… 总之就先枚举每一个子图,再枚举子图的一个子集 如果这个子集是一个独立集的话,这个子集就涂同一个颜色 然后从割掉这个独立集剩下的图的状态转移出来,取一个min别管复杂度了,总之是过了,1600+ms原创 2016-08-11 19:08:55 · 1268 阅读 · 0 评论 -
[Codeforces 27D] Ring Road 2 (二分图染色)
Codeforces - 27D 给定一个 NN 个点的环,要求添加 MM 条路 这些路要么在环的内部,要么在外部 问是否有一种添加方案, 使得所有新加的路除了端点以外的地方不相交首先显然可以将环剖成一条链 然后不相交的路就转化为了线段覆盖问题 然后 (M2)\mathcal{O}(M^2) 预处理出所有可能相交的线段 然后跑二分图染色即可 判断线段相交可能写起来有原创 2016-08-24 21:43:07 · 499 阅读 · 0 评论 -
[HDU 5889] Barricade (最短路 + 最小割)
HDU - 5889 给定一张无向图,每条边的长度为 1 要求在 1到 N的最短路上放一些陷阱 使得 1到 N的每条最短路上至少有一个陷阱 其中在某条边上修陷阱有一个代价,求最小代价和很显然的一个最小割 首先先用 SPFA把最短路求出来,然后依据最短路建图 然后再在新图上跑网络流即可 注意这个流量是有方向的,最短路上的反向边容量应该清零#pragma comment(linker, "原创 2016-09-17 22:34:00 · 638 阅读 · 0 评论 -
[CSU 1803(湖南省赛16)] 有向无环图 (DAG+公式化简)
CSU - 1803 (湖南省赛16) 给定一个 nn 个点的有向无环图, 定义 count(u,v)count(u,v) 为 uu 到 vv 的路径方案数 求 ∑i=1n∑j=1ncount(i,j)×ai×bj\displaystyle\sum_{i=1}^n \sum_{j=1}^n count(i,j)\times a_i\times b_j 其中 aia_i 与 bj原创 2016-09-05 20:21:57 · 443 阅读 · 0 评论 -
[CSU 1808(湖南省赛16)] 地铁 (拆点建图+多源多汇最短路)
CSU - 1808 (湖南省赛16) 给定一张图,每条边有一个距离和颜色 问从 1到 n的最短路为多少 其中一条路径的长度不仅要算上距离 还要算上相邻两条边颜色的差如果对每个点记录从某个颜色转移过来的最短路肯定是不现实的 以边为点跑最短路肯定也是不现实的,这种做法与前者无本质区别 但在CSUOJ上这两种做法都能过,可能是数据比较弱 正解是拆点,一个点每连出去一条边,就原创 2016-09-06 22:17:38 · 710 阅读 · 0 评论 -
[SCU 4531] Cruel War II (暴力)
SCU - 4531 给定一个一般图,要求用最少的点覆盖所有边 并且使用的点数不超过 10个一般图的最小点覆盖是一个 NP问题 这道题的正解是直接暴力枚举 按顺序枚举每一条边,每当遇到第一条左右端点均未覆盖的边 就枚举覆盖左右端点,对于两种情况再分别进行 dfs由于每覆盖一条边至少用掉一个点,所以dfs深度不超过 10层 每层都选择覆盖左端点或者右端点,所以是 2^10 在加上原创 2016-07-14 22:45:10 · 561 阅读 · 0 评论 -
[HDU 5727] Necklace (暴力 + 二分图匹配)
HDU - 5727 有阴阳两种珠子交替地串成一个环, 其中某些阳与某些阴串在一起时,会变得黯淡 求一种合理的摆放方式,使得黯淡的阳最少 输出这个数量首先暴力枚举所有阴的摆放方式 然后对于每一个阴的摆放方式,两个阴之间有空隙 阳可以从阴中插空放入,而对于每一个空和一个阳, 如果这个阳放入是合法的,就连一条边 最后再跑一遍二分图最大匹配,用 N减去匹配数就能得到最少黯淡原创 2016-07-24 16:40:16 · 276 阅读 · 0 评论 -
[POJ 3662] Telephone Lines (二分答案+SPFA)
POJ - 3662 有一张图,要求修一条路径使得 1和 N相连 电话公司可以免去路径上 K条边的花费,FJ 需要额外花费路径上剩余边中最大的边权 问花费最小是多少 其实问的就是如何找一条路径连接 1和 N,使得路径上 K+1大的边最小 看起来像个最小生成树之类的,但很容易证明做法不对正确做法是二分答案 ans,确定花费,然后在图上跑 SPFA 跑的时候,其中大于 ans的边肯定让电话公原创 2016-04-07 18:13:25 · 346 阅读 · 0 评论 -
[HDU 4324] Triangle LOVE (拓扑排序,DFS)
HDU - 4324 题意是,一张有 N个点的图,保证每两个点之间有且只有一条有向边连接 求是否存在三元环 用拓扑排序判环,如果存在环,则一定存在三元环 证明如下: 不存在二元环 设存在 n(n>=3)元环 p1->p2->p3->…->pn->p1 1) 若存在边 p3->p1,则存在三元环 (p1->p2->p3->p1) 2) 若不存在 p3->p1,则必然存在 p1->p3原创 2016-04-07 19:14:21 · 275 阅读 · 0 评论 -
[SCU 4498] RunningPhoton's Nightmare (BFS预处理+SPFA)
SCU - 4498 给定一张网格图,其中有一些不可到达点和一些时间重置装置 RunningPhoton从起点出发,身上有一个定时炸弹,当时间置0时他就会死 但是在置0前碰到时间重置装置又能重置时间 问 RunningPhoton是否能到达终点 若能,则输出最短时间,若不能,则输出 “Poor RunningPhoton”这题虽然地图是有 600*600,但是有不超过原创 2016-05-10 22:18:41 · 863 阅读 · 0 评论 -
[HDU 4587] TWO NODES (Tarjan+割点)
HDU - 4587 给一张 N个点的无向图,要求删掉两个点以及与其相连的边 使得剩下的图中的连通分量的数量最多 其中 3≤N≤50003 \le N \le 5000思路很直接,直接暴力枚举删掉的第一个点,打上标记 然后在剩下的图中找割点,统计删掉割点后增加的连通分量的数量 最后更新答案就好统计的删掉割点的后连通块数量的方式,就是把 cutv[u]=1改为 cutv[u]++原创 2016-04-28 20:23:15 · 460 阅读 · 0 评论 -
[HDU 1914] The Stable Marriage Problem (稳定婚姻问题)
HDU - 1914 稳定婚姻问题 每个男士对所有女士有个喜欢程度,每个女士对所有男士也有个喜欢程度 使男女两两配对,使得找不到一对男女,满足 他们不相匹配,且他们喜欢对方都超过喜欢自己现有的另一半稳定婚姻问题的求解思路,分三个步骤 每个尚未配对的男士寻找当前他最喜欢的女士 1. 若当前女士未配对,则配对 2. 若当前女士已配对,且她更喜欢后来的男士,则她抛弃未婚夫原创 2016-05-05 15:33:11 · 419 阅读 · 0 评论 -
[HDU 3861] The King's Problem (最小路径覆盖)
HDU - 3861 将图分成若干块,满足 1. 相互联通的两个点必须在同一块 2. 同一块中的任意两点,必须能单向可达首先先用Tarjan缩点, 然后同一块的实际上必须在一条单向的路径上 然后问题就转化为了dag上不相交的最小路径覆盖这个问题可以转化为二分图匹配解决 建立一个二分图,原图中任意一个点 u 在二分图中都拆成两个点,X部的u点和 Y部的 u’点 原图中的任意原创 2016-05-31 19:34:38 · 264 阅读 · 0 评论 -
[SCU 4522] 寻找fly真迹 (脑洞+构造)
SCU - 4522 给定一个只含小写 a、b、c的字符串 其中每个字母和字典序相等和相邻的字母相连 给出连好边的一张图,问是否是一个合法状态首先 b和所有字母都连上了边, 所以图中与所有字母连上边的都是 b,可以先去掉 然后整张图就变成了两个联通块,一个是 a的,一个是 b的 并且每个联通块都是完全图 判断一下是不是两个联通块,是不是两个完全图就好了#pragma com原创 2016-06-05 14:24:45 · 331 阅读 · 0 评论 -
[SCU 4525] meixiuxiu学图论 (二分答案 | 最小生成树)
SCU - 4525 定义一个环的价值为环中最大边的边权 求图中所有环的最小价值二分的解法:二分最小的价值,然后在图中跑 大于mid值的边都割掉不走 特别无脑,特别暴力 时间复杂度 O(n∗logn)O(n*logn)学长提醒的最小生成树的做法:利用Kruskal,在加入一条边,发现生成一个环的时候 这条边的权值就是环中的最大边的权值 时间复杂度 O(n∗logn)O(n*lo原创 2016-06-05 14:28:10 · 352 阅读 · 0 评论 -
[HDU 5739] Fantasia (点双联通分量 + Block Forest Data Structure)
HDU - 5739 给定一张无向图,每个点有个点权 一个图的权值计算为,现将同一联通分量的点权相乘 再将不同联通分量的点权相加 求图割去一个点后的权值其中对于哪些非关节点,权值比较好计算 而对于关节点,割去之后图比较复杂 所以要用到一个叫做 Block Forest Data Structure的建图方式 首先求出图中的点双联通分量, 对于每一个点双,新建一个点向其原创 2016-07-24 16:31:47 · 493 阅读 · 0 评论 -
[POJ 3713] Transferring Sylla (枚举删点+Tarjan求割点)
POJ - 3713 给定一张 N个点的无向图,问是否三联通 三联通指的是从a到b有三条除了a和b外没有重点的路径暴力的做法是枚举删掉两个点,看图是否还联通 复杂度 (N3)\mathcal{O}(N^3) 但是 N<=500,在POJ上肯定被卡掉了 所以优化的做法是枚举删掉一个点,看图是否有割点 如果存在割点,说明删掉这个点,图就不联通了 复杂度 (N2)\mathcal原创 2017-03-19 15:06:35 · 570 阅读 · 0 评论