随笔分类 -  图论-生成树

摘要:题目链接 "BZOJ3118" 题解 少有的单纯形好题啊 我们先抽离出生成树 生成树中的边只可能减,其它边只可能加 对于不在生成树的边,其权值一定要比生成树中其端点之间的路径上所有的边都大 然后就是一个最小化的线性规划 为了防止限制过多 我们只需对原先生成树中的比该边大的边建立限制即可 然后就是单纯 阅读全文
posted @ 2018-07-12 16:23 Mychael 阅读(306) 评论(3) 推荐(0) 编辑
摘要:题目链接 "BZOJ2322" 题解 鉴于 "BZOJ2115" ,要完成此题,就简单得多了 对图做一遍dfs,形成dfs树,从根到每个点的路径形成一个权值,而每个返祖边形成一个环 我们从根出发去走一个环再回到根,最终会异或上环的权值而又回到根 所以环是可以任意选的 我们把环的权值丢进线性基 阅读全文
posted @ 2018-07-12 10:35 Mychael 阅读(270) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ4144" 题解 这题好妙啊,,orz 假设我们在一个非加油站点,那么我们一定是从加油站过来的,我们剩余的油至少要减去这段距离 如果我们在一个非加油站点,如果我们到达不了任意加油站点,我们一定废了 那么我们在一个非加油站点,就一定可以到达最近的加油站,而由于我们剩余的油是要减去到 阅读全文
posted @ 2018-05-26 15:50 Mychael 阅读(214) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ3714" 题解 我们如果知道了所有的数,同样就知道了所有的前缀和 相反,我们如果求出了所有前缀和,就知道了所有的数,二者是等价的 对于一个区间[l,r]如果我们知道了前缀和sum[l1],我们就知道了sum[r] 所以区间[l,r]相当于连接l1r 阅读全文
posted @ 2018-05-26 10:28 Mychael 阅读(170) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2001" 题解 CDQ分治神题。。。 难想难写。。 比较朴素的思想是对于每个询问都求一遍BST,这样做显然会爆 考虑一下时间都浪费在了什么地方 我们每次求BST实际上就只有一条边不同,我们实际浪费了很多时间在处理相同的边上 那就考虑分治 对于一个待修改的边集,我们将其权 阅读全文
posted @ 2018-05-21 09:58 Mychael 阅读(257) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2753" 题解 完了我连kruskal裸题都做不出来了。。 题目是求最小树形图,即有向图最小生成树 我们不能直接上kruskal,而要保证先加入前面的点, 所以我们排序的时候第一关键字改为高度即可 C++ include include include include 阅读全文
posted @ 2018-05-20 21:18 Mychael 阅读(127) 评论(0) 推荐(0) 编辑
摘要:题目链接 "BZOJ2395" 题意:无向图中每条边有两种权值,定义一个生成树的权值为两种权值各自的和的积 求权值最小的生成树 题解 如果我们将一个生成树的权值看做坐标,那么每一个生成树就对应一个二维平面上的坐标 在同一个反比例函数图像上的点权值相同,反比例函数xy越小的点越贴近坐标轴 所以答案 阅读全文
posted @ 2018-05-04 11:28 Mychael 阅读(322) 评论(0) 推荐(0) 编辑
摘要:题目 给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。 输入格式 第一行V,E,need分别表示点数,边数和需要的白色边数。 接下来E行,每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色1黑色)。 输出格式 一行 阅读全文
posted @ 2018-03-07 18:34 Mychael 阅读(248) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示