摘要: 这篇文章是从我的另外一篇文章:基础算法:贪心中分离出来的。 因为证明过程比较长。。。 详细内容欢迎看原文章。 设集合$A$中有$n$个元素,将其中每个元素进行编号为$a_x$ \(\left ( x\in \left [ 1,n \right ] \right )\) : \[ \begin{ali 阅读全文
posted @ 2020-08-18 13:15 x_miracle 阅读(1403) 评论(2) 推荐(1)
摘要: ###贪心算法的定义与性质: 贪心算法是通过做出一系列 选择 来求出问题的最优解。在每一个决策点,它作出在 当前看来最好 的选择。 (也就是说贪心算法并 不从整体最优上加以考虑 ,它所作出的选择只是在某种意义上的 局部最优选择 。大概也是贪心算法名字的由来) (贪心算法进行决策时, 可能依赖于以往所 阅读全文
posted @ 2020-08-17 10:51 x_miracle 阅读(465) 评论(0) 推荐(1)
摘要: #include <bits/stdc++.h> long long binaryPow(long long a,long long b,long long m){ if(b == 0) return 1; else if(b%2==1) return a*binaryPow(a,b-1,m)%m; 阅读全文
posted @ 2020-08-09 09:35 x_miracle 阅读(132) 评论(0) 推荐(0)
摘要: 比较函数分为两种: 1.普通的比较函数,以全局函数的形式呈现。 2.结构体内嵌比较函数。 相对于普通的比较函数,内嵌式的速度更快,而且如果存在多种结构的比较,内嵌式也显得更清爽。所以,这里主要讲后者。 形式: (优先队列) struct node { int d,pos; bool operator 阅读全文
posted @ 2020-08-09 09:26 x_miracle 阅读(598) 评论(0) 推荐(0)
摘要: P2176 [USACO11DEC]RoadBlock S / [USACO14FEB]Roadblock G/S 好题,这道题有许多值得记录的细节。 在链式前向星中,记录邻接表边权的编号。 这让我对邻接表结构有了更深的理解,原本以为,变量cnt的意义只是一个计数器,而当建图的过程完成后,cnt的历 阅读全文
posted @ 2020-08-08 09:37 x_miracle 阅读(198) 评论(0) 推荐(0)
摘要: 二分查找(Binary Search) 二分查找也称折半查找(Binary Search),相对于普通的顺序查找,二分查找具有极好的效率。 **使用条件:**要求线性表必须采用 顺序存储结构 ,而且表中元素按关键字 有序排列 。 时间复杂度:$ \Theta(logn) $ 查找过程: 首先,假设表 阅读全文
posted @ 2020-08-04 11:44 x_miracle 阅读(165) 评论(0) 推荐(0)
摘要: [USACO08NOV]Cheering up the Cow G 核心算法:Kruskal 题目中说:“删去尽可能多的边”。就是指保留一棵最小生成树。 构图: 我们取一小段来分析一下: (可以把这个理解为单位元) 按照题目中的意思,走过这一张的花费为: C[1] + L + C[2] + L + 阅读全文
posted @ 2020-08-01 21:25 x_miracle 阅读(131) 评论(0) 推荐(0)
摘要: 基本思想: 假设连通网G=(V,E),令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,),图中每个顶点自成一个连通分量。 在E中选择 代价最小 的边,**若该边依附的顶点分别在T中不同的连通分量上,则将此边加入到T中;否则,舍去此边而选择下一条代价最小的边。**依此类推,直至T中所有顶 阅读全文
posted @ 2020-07-30 00:05 x_miracle 阅读(117) 评论(0) 推荐(0)
摘要: 题目 核心思路:Dijkstra算法 首先,我认为这道题最重要的是建图,解释一下我是如何建图: (题目中说明了是“单程巴士线路”,故图为有向图。) 样例: (线路的站点就是节点,边上的数字就是指这条边属于哪一条线路) 由样例图可以看出,1->7的最少换乘的次数是2次: 1->3 换乘 3->6 换乘 阅读全文
posted @ 2020-07-29 00:31 x_miracle 阅读(223) 评论(0) 推荐(0)
摘要: 特点:是从起始点开始,采用贪心算法的策略,每次遍历到始点距离最近且未访问过的顶点的邻接节点,直到扩展到终点为止。 举例说明: 图例来自《算法导论》 注意:要求图中不存在负权边。 朴素: void init() { memset(vis,0,sizeof(vis)); memset(d,0,sizeo 阅读全文
posted @ 2020-07-27 23:04 x_miracle 阅读(150) 评论(0) 推荐(0)