算法
文章平均质量分 58
懒懒地记录所学
它又报错了
这个作者很懒,什么都没留下…
展开
-
记录一下UVA-10054(求解欧拉回路路径)
前置知识: 欧拉图:能够遍历所有的边并最终回到起点的一种特殊的图; 半欧拉图:能够遍历所有的边但回不去最初的起点的一种特殊的图; 欧拉回路:从某一起点出发能够遍历所有边并最终回到起点的路径; 判断欧拉图: 无向图:度 == 偶数(进入一个结点后要离开,需要两条路径) 有向图:出度 == 入度(进入一个结点后要离开,进多少次就要离开多少次) 注意:判断欧拉图之前需要判断这个图是不是一个连通图!!! Hierholzers算法: 没找到这个算法的名称,按照我的英语水平应该读作海尔霍兹算法 这个算法用于求解欧拉回原创 2021-08-22 23:30:48 · 111 阅读 · 0 评论 -
记录下HDU-2544(Floyd最短路和Dijkstra最短路)
最路路问题 题目链接 直接就是模板题,不过最短路的算法总是忘记了 Floyd算法: 通过遍历所有中间结点k查看是否能令 i 到 j 的距离更短,我觉得甚至可以理解为一种暴力。选择一个点加入到《已经选择点集》,使用这个点更新所有两两点之间的距离,接着从剩下的《未选择点集》中选择另一个点加入其中,不断反复直到《未选择点集为空》 实际上的代码就只有几行: void floyd() { for (int k = 1; k <= n; k++) {//注意这里是从中间结点开始进行的 for (int i原创 2021-08-22 17:36:02 · 102 阅读 · 0 评论 -
记录下POJ-2441(状态压缩dp)
记录下POJ-2441(状态压缩dp) 状态压缩 通常使用在np类问题的小规模求解中,因为规模大了实际上无解 状态压缩通常将一些问题的情况用编码的方式进行呈现,形如二进制编码,或者定义一个全序关系来简化表示状态(这种时候你要将分类状态的情况牢记清楚)。 既然是用编码的方式进行表示,通常使用位运算来进行操作。这里位运算就不赘述了 这里放上POJ-2441题目链接 思路:开辟空间sta[1<<牛的数量],用来记录每个状态下的方案数,将棚内是否有牛的状态压缩为整数。例如状态为5的时候,二进制为101,转载 2021-08-16 00:48:24 · 77 阅读 · 0 评论 -
记录下HDU-2063(二部图-匈牙利算法)
二部图例题HDU-2063(匈牙利算法) 二部图基本概念: 二部图:一个图中的所有点能够被划分为两个集合,图中的所有边都跨越了集合的边界。(例如:一群人以男女区分为两部分,一些男生喜欢一些女生,一些女生喜欢一些男生,这些男女生和这些喜欢的情况可以称作二部图) 匹配:匹配是一组边的集合,其中任意两边都没有公共点。(若彼此喜欢男女生能够在一起,某一情况下所有这种能够在一起的关系称为匹配,这一情况下在一起的关系就称为匹配边,原本喜欢但是没有在一起的就称为未匹配边) 最大匹配:所有匹配中,边数最多的一个匹配关系。转载 2021-08-13 17:34:09 · 248 阅读 · 0 评论