![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACWing
锦衣夜行孙大侠
我不识青天高,黄地厚,唯见月寒日暖来煎人寿。
展开
-
算法之路-图的最短路
1. 单源最短路1.1 无负权边 - 迪杰斯特拉算法自环和重边对迪杰斯特拉算法没有影响。要求无负权边的原因是:考虑自环中有负权边的情况其中A 为源点,C为终点,第一轮选取源点A,结束后更新,d[c]=1,d[b]=2,第二轮选取C点,不再更新d[c],d[c]值固定为1,但实际上A到C的最短距离应该为2+(-2)=0。算法核心:每次选取距离源点最近的点,对其余距离进行刷新,直至选取到目标点。def djs(): global n,m,hd,va,nx,wg M=0x3f3原创 2021-07-29 14:26:19 · 99 阅读 · 0 评论 -
算法之路-双指针算法
1. 知识核心双指针算法即字面意思,在解题过程需要两个指针进行比较,常见的就是查找最值问题,这里的双指针还意味着,找到题目中某个指针的隐藏规律,简化该指针的移动,从而提高算法效率。2. 应用清单以《最长连续不重复子序列》为例。2.1 写出暴力破解代码其实只用记录一下自己第一次想到的思路即可。2.2 构建代码模板:for i in range(n): while (j符合的条件): #具体的算法执行过程2.3 优化过程寻找某个,或两个指针的移动规律,建立关系原创 2021-07-03 14:58:33 · 137 阅读 · 0 评论 -
算法之路-归并排序
1 算法思想该算法基于分治的思想,使两个有序数组依次合并。① 确定分界点mid=(s+e)//2② 递归排序左右两边③ 归并-合二为一2 代码尚无代码问题def merge_sort(l,s,e): if s>=e: return mid=s+e>>1 merge_sort(l,s,mid) merge_sort(l,mid+1,e) tmp=[] i,q=s,mid+1 while i<=mid原创 2021-06-13 18:24:04 · 47 阅读 · 0 评论 -
算法之路-快速排序
1 算法思想该算法基于分治的思想,使某个位置的两边一大一小。① 确定分界点确定分界点有四种方法:左边界 l[i]中点 l[(i+q)/2]右边界 l[q]随机② 调整区间左边<=x,右边>x③ 递归左右两段2 编程问题输入格式:输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。输入样例53 1 2 4 5第二行在input()时是作为整体读进去的,不再像c++一样循环读入。所以要用str.split原创 2021-06-13 09:41:49 · 129 阅读 · 0 评论