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 · 154 阅读 · 0 评论 -
算法之路-双指针算法
1. 知识核心 双指针算法即字面意思,在解题过程需要两个指针进行比较,常见的就是查找最值问题,这里的双指针还意味着,找到题目中某个指针的隐藏规律,简化该指针的移动,从而提高算法效率。 2. 应用清单 以《最长连续不重复子序列》为例。 2.1 写出暴力破解代码 其实只用记录一下自己第一次想到的思路即可。 2.2 构建代码模板: for i in range(n): while (j符合的条件): #具体的算法执行过程 2.3 优化过程 寻找某个,或两个指针的移动规律,建立关系原创 2021-07-03 14:58:33 · 206 阅读 · 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 · 100 阅读 · 0 评论 -
算法之路-快速排序
1 算法思想 该算法基于分治的思想,使某个位置的两边一大一小。 ① 确定分界点 确定分界点有四种方法: 左边界 l[i] 中点 l[(i+q)/2] 右边界 l[q] 随机 ② 调整区间 左边<=x,右边>x ③ 递归左右两段 2 编程问题 输入格式:输入共两行,第一行包含整数 n。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整个数列。 输入样例 5 3 1 2 4 5 第二行在input()时是作为整体读进去的,不再像c++一样循环读入。所以要用str.split原创 2021-06-13 09:41:49 · 216 阅读 · 0 评论
分享