![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
pessiboy
头号混子,会点C++,会点python,会点java。
展开
-
floyd-习题(leetcode-743)
class Solution {public: int networkDelayTime(vector<vector<int>>& times, int n, int k) { //第一位维度就是:一个数组 //第二位:表明首,末点和权重 //初始化每一个点 vector<vector<int>> graph(n+1,vector<int>(n+1,1e9));.原创 2021-05-10 17:56:15 · 211 阅读 · 0 评论 -
floyd算法
floyd算法好像是图论算法里面最简单的一个算法(好写又好理解),应该没有之一了,floyd算法解决的是多源最短路的问题,模板是最最最最最最简单的。原理上就是动态规划。动态规划不要从局部上去进行分析。先搞清楚问题的本质,我们在一个多源的图中。现在的要求是:从i到j中途不经过索引比k大的点的最短路径。那么可以写成f[k,i,j].但是我们可以去进行状态转移。大白话就是:从i点进行出发,讲过1-k这些点,然后最终到达j的最短距离。分析如下:从i—>j,存在两种选择:直接从i到j;从i经过若干个原创 2021-05-10 16:02:57 · 475 阅读 · 0 评论 -
topsort习题1
无语了,调了一下午,结果边没开多。还是套模板,但是边权需要多开一点点,他有别于模板,模板是点对点之间的边权,边不会那么多,但是这里一样。用邻接表去构建的时候,会产生一对多的情况#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;//接下来 n 行,第 i 行描述第 i 个人的孩子;//每行最后是 0 表示描述.原创 2021-05-08 17:49:27 · 168 阅读 · 0 评论 -
Topsort-稍微讲讲
拓扑排序:首先拓扑排序适用于aov网,就是有向无环图。这里插入一下链接:比较容易去进行理解。top排序的图形讲解结合王道的内容讲解去解释一下拓扑排序的条件:(1)每个顶点出现且仅仅出现一次(2)若顶点A在序列中,排在顶点B的前面,则在图中不存在从顶点B到顶点A的路径算法流程:统计所有节点的入度,对于入度如果为0的点分离出来。如果最后不存在入度为0的节点,那就说明有环,不存在拓扑排序,也就是很多题目的无解的情况。算法流程:用队列来执行 ,初始化讲所有入度为0的顶点入队。主要由以下两步循原创 2021-05-08 16:15:10 · 251 阅读 · 0 评论 -
图论-DFS
从一开始的基础到慢慢进入数论,中间也算是写了一点点代码了。从今天开始就要开始进入图论了,不然一直在基础层面上,数据结果的知识一点都没有去进行涉及。虽然还有很多的内容没有更新完,但是现在还是开始去交叉的进行吧,之前上过数据结构的课,但是coding的能力很弱,现在补一下吧。也算是对这个知识点进行实际的操作吧。DFS:深度优先搜索,尽量往深处进行,树的前中后遍历从某种意义上来说算是深度优先搜索BFS:广度优先搜索,从广度上进行出发(类比于水),数的层序遍历其实就是类似于BFS。这里用树去进行类比从数据结原创 2020-08-15 21:59:47 · 1057 阅读 · 0 评论 -
第六课-数据结构(链表,栈,队列)
链表,栈,队列。以上都是基于数组进行模拟实现。当然我会补上链表实现,但是有一点需要去进行考虑,因为new,malloc操作都是动态去申请内存空间,所以当创建大量的节点的时候,时间上就是不太允许了。而且节点释放不放,就会造成内存泄漏其实我上课一直,包括一些数据结构书籍都是使用的是结构体+指针,这里真的是很墙裂很强烈推荐使用数组去模拟实现,链表,栈,队列链表题目来源:AcWing,leetcode,patAcWing17. 从尾到头打印链表AcWing826. 单链表Ac原创 2020-07-01 03:29:56 · 170 阅读 · 0 评论 -
第五课-位运算
第五课-位运算大约3500字,仔细阅读需要15分钟,如果上手执行,推理步骤,并书写代码大约需要50分钟。内容若存在错误请与我练习。这一块内容是我认为比较重要的一个内容。其实更应该说是自己的一个盲区吧,今天算是填了一个小洞,心里还是十分高兴的。本来是想把这个内容也放在第四课讲的,但是真的发现位运算的魅力真的真的是蛮大的。这一块内容算是我写了这么多帖子以来,理解得最深刻的一部分了。参考书书籍:《算法笔记》第二版-曾磊,胡凡编著《数据结构》第二版-高等教育出版社-陈越编著《计算机组成与设计-硬件软件接原创 2020-06-28 23:00:05 · 383 阅读 · 0 评论 -
第三课-前缀和,差分
话先说在前面前缀和应用:在时间复杂度上能比较可观的Acwing-795-前缀和真的是蛮有用的#include <iostream>using namespace std;const int N=1e6+10;int n,m,a[N],s[N];int main(){ ios::sync_with_stdio(false); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[N原创 2020-06-27 15:08:09 · 117 阅读 · 0 评论 -
第三课-前缀和差分
话先说在前面前缀和应用:在时间复杂度上能比较可观的Acwing-795-前缀和真的是蛮有用的#include <iostream>using namespace std;const int N=1e6+10;int n,m,a[N],s[N];int main(){ ios::sync_with_stdio(false); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&a[N原创 2020-06-27 15:06:04 · 134 阅读 · 0 评论 -
第二课-高精度
其中高精度的题目不乏就是大数的加减乘除;加法(应该是最简单的):#include <iostream>#include <vector>const int N=1e6+10;using namespace std;vector<int> add(vector<int>& A,vector<int>& B){ vector<int> C; int carry=0; for(int i=0;i&原创 2020-06-25 22:12:49 · 131 阅读 · 0 评论 -
第一课-快速排序,归并排序,二分
排序(快速排序和归并排序)二分(整数和浮点数)理解+背模板:如何提高熟练度,对模板重复使用3~5次。题目:一道题目重复写3~5遍 l r --------------------------------------快排是基于分治的思想:①:确定边界:左边界,右边界,中间边界q[l] q[r] q[(r+l)/2]②:调整区间:随机取一个数,其实就是pivot,算是一个分界点,把所原创 2020-06-25 15:04:34 · 162 阅读 · 0 评论