线上OJ:1392:繁忙的都市(city)核心思想:本题本质是最小生成树,可以采用 Prim 和 Kruskal 算法来解。解法一、PrimPrim 算法:蓝白点阶段0:初始化(minv[], vis[], minv[1])阶段1:在剩余蓝点中找出 minv 最小的点 k阶段2:由于k点是新加入的白点,所以要更新剩余蓝点到白点的 minv,以备下一轮使用#include <bits/stdc
线上OJ:【例4-11】最短网络(agrinet)算法描述:(使用 Kruskal 方法求最小生成树)1、初始化并查集。p[x]=x。 2、初始化输出结果ans=0 3、将所有边从小到大排序(sort)。 4、计数器 k=0,记载当前找到几条边; 5、核心代码如下for (i=1; i<=cnt; i++) // cnt为边的数量。循环所有已从小到大排
线上OJ:一本通:1386:打击犯罪(black)核心思想:1、如果按照题意,从1~k的顺序进行删除(枚举),则每次枚举完都要重置并查集,比较麻烦。2、考虑逆向思维, 不从1 ~ k 顺序删除,而是从 n ~ k 逆序往图中添加。a. 如果添加到 k 时,最大集合的元素数量不超过 n/2 ,则说明k还可以继续减小b. 如果添加到 k 时,最大集合的元素数量开始超过 n/2,则这个&nbs
线上OJ:1385:团伙(group)核心思想:1、朋友的朋友就是朋友。这句话意味着朋友之间直接合并。2、敌人的敌人就是朋友。这句话说明,如果 a 和 b 是敌人,a 和 c 也是敌人,则 c 和 b 就是朋友。如果 a 和 d 也是敌人,则 d 和 {c, b} 都是朋友。2.1 所以当 a 和 x 是敌人时,把 x 和 a 的敌人 合并即可。用一个数组
题目出处:《信息学奥赛一本通(C++)版》P472页线上OJ:http://ybt.ssoier.cn:8088/problem_show.php?pid=1342本题在书中作为 Floyed 问题,估此处采用 Floyd 解法。Floyed的时间复杂度是O (N3),适用于出现负边权的情况核心思想是三层循环,第一层循环中间点 k,第二层循环起点 i,第三层循环终点 j,算法的思想很容易理解:如果
题目出处:《信息学奥赛一本通 (C++)版》P468页线上OJ:http://ybt.ssoier.cn:8088/problem_show.php?pid=1375本题属于图论中的欧拉图。背景知识:如果一个图存在一笔画,则一笔画的路径叫做欧拉路,如果最后又回到起点,那这个路径叫做欧拉回路。 奇点的定义:如果与一个点相连的边的数目为奇数,则该点称为奇点。对于能够一笔画的图,我们有以下两个定理。 定
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号