图论
为啥不能重名
这个作者很懒,什么都没留下…
展开
-
次小生成树
最小生成树的求法无非就两种方法:一种是prim算法,一种是kruscal算法prim算法类似于迪杰斯特拉算法,时间复杂度为O(n^2)kruscal算法是每次枚举最小边,并查集检验是否成环即可,时间复杂度为O(elog(e))两种方法都非常简单。。。。现在扩展一种知识点,叫做次小生成树:定义:给定一个带权图,把图中所有生成树按权值从小到大排序,第二小的成为次小生成树计算次小生成树的两种方法:方法1:先求最小生成树,再枚举删去最小生成树中的边求解,时间复杂度O(mlogm+n*m)方法2:先求原创 2021-08-07 10:51:26 · 137 阅读 · 0 评论 -
7-14 直捣黄龙 (30 分)
7-14 直捣黄龙 (30 分)本题是一部战争大片 —— 你需要从己方大本营出发,一路攻城略地杀到敌方大本营。首先时间就是生命,所以你必须选择合适的路径,以最快的速度占领敌方大本营。当这样的路径不唯一时,要求选择可以沿途解放最多城镇的路径。若这样的路径也不唯一,则选择可以有效杀伤最多敌军的路径。输入格式:输入第一行给出2个正整数N(2 ≤ N ≤ 200,城镇总数)和K(城镇间道路条数),以及己方大本营和敌方大本营的代号。随后N-1行,每行给出除了己方大本营外的一个城镇的代号和驻守的敌军数量,其间以空原创 2021-04-05 17:20:44 · 384 阅读 · 0 评论 -
最近公共祖先问题(LCA)
暴力:给定节点u,v,首先对u进行回溯,并沿途标记,再对v进行回溯直到遇到一个被标记的节点,该节点就是u,v的最近公共祖先。Tarjan算法:需要预先知道所有的询问,并对询问做一些预处理,即把需要询问的一对节点捆绑在一起,该算法主要应用dfs算法和并查集算法。Tarjan算法样例模拟比较详细的博客:https://www.cnblogs.com/JVxie/p/4854719.html第三种RMQ(RMQ暂时还不算了解)参考博客:https://blog.csdn.net/zmx354/artic原创 2021-03-15 20:33:59 · 68 阅读 · 0 评论 -
回家之旅
#include <iostream>#include <bits/stdc++.h>#include <string.h>#include <set>#include <list>#include <map>#include <algorithm>#include <stdio.h>#include <math.h>#include <bitset>#include原创 2021-01-19 16:38:41 · 321 阅读 · 0 评论 -
最小路径覆盖
最小路径点覆盖:最小路径覆盖就是找出最小的路径条数,使之成为P的一个路径覆盖.(来源:百度百科),通俗点讲,就是在一个有向图中,找出最少的路径,使得这些路径经过了所有的点。在一个p*p的有向图中,路径覆盖就是在图中找一些路径,使之覆盖了图中的所有顶点,且任何一个顶点有且只有一条路径与之关联。我们需要知道的是:1.一个点也是一个路径覆盖,只不过它的路径覆盖长度为0。2.任何一个顶点有且只有一条路径与之相关联。路径覆盖与二分匹配之间的关系(有向无环图):最小路径覆盖=|p|-最大匹配数(来源百度百原创 2020-11-28 21:42:15 · 119 阅读 · 0 评论 -
迪杰斯特拉+【堆(小根堆)】/【优先队列】和spfa算法的区别
大佬博客:https://www.cnblogs.com/flipped/p/6830073.html转载 2020-11-20 21:35:40 · 166 阅读 · 0 评论 -
【迪杰斯特拉的优化】 洛谷4779板子题
P4779 【模板】单源最短路径(标准版)题目背景2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程 一题里非常熟练地使用了一个广为人知的算法求最短路。然后呢?最终,他因此没能与理想的大学达成契约。小 F 衷心祝愿大家不再重蹈覆辙。题目描述给定一个 n个点,m条有向边的带非负权图,请你计算从 s 出发,到每个点的距离。数据保证你能从 sss 出发到任意点。输入格式第一行为三个正整数 n,m,s。 第二行起 m行,每行三个非负整数 ui,vi,wi,表示从 ui原创 2020-11-20 20:41:11 · 330 阅读 · 0 评论 -
7-5 是否完全二叉搜索树 (30分)【数组+链表】
将一系列给定数字顺序插入一个初始为空的二叉搜索树(定义为左子树键值大,右子树键值小),你需要判断最后的树是否一棵完全二叉树,并且给出其层序遍历的结果。输入格式:输入第一行给出一个不超过20的正整数N;第二行给出N个互不相同的正整数,其间以空格分隔。输出格式:将输入的N个正整数顺序插入一个初始为空的二叉搜索树。在第一行中输出结果树的层序遍历结果,数字间以1个空格分隔,行的首尾不得有多余空格。第二行输出YES,如果该树是完全二叉树;否则输出NO。输入样例1:938 45 42 24 58 30 6原创 2020-11-16 17:38:13 · 126 阅读 · 0 评论 -
Rain on your Parade HDU - 2389 【Hopcroft-karp 算法】
You’re giving a party in the garden of your villa by the sea. The party is a huge success, and everyone is here. It’s a warm, sunny evening, and a soothing wind sends fresh, salty air from the sea. The evening is progressing just as you had imagined. It co原创 2020-11-14 16:13:21 · 126 阅读 · 0 评论 -
棋盘游戏 HDU - 1281(二分图最大匹配)
小希和Gardon在玩一个游戏:对一个NM的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击。所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下,棋盘里有些格子是可以避开的,也就是说,不在这些格子上放车,也可以保证尽量多的“车”被放下。但是某些格子若不放子,就无法保证放尽量多的“车”,这样的格子被称做重要点。Gardo原创 2020-11-13 20:38:10 · 466 阅读 · 4 评论 -
多条最短路径、点权和最大问题
7-4 城市间紧急救援 (25分)作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图。在地图上显示有多个分散的城市和一些连接城市的快速道路。每个城市的救援队数量和每一条连接两个城市的快速道路长度都标在地图上。当其他城市有紧急求助电话给你的时候,你的任务是带领你的救援队尽快赶往事发地,同时,一路上召集尽可能多的救援队。输入格式:输入第一行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0 ~ (N−1);M是快速道路的条数;S是出发地的城市编号;D是目的地原创 2020-09-18 20:27:07 · 459 阅读 · 0 评论