![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
假期总结
文章平均质量分 53
xuemengliyou
这个作者很懒,什么都没留下…
展开
-
高级数据结构—并查集
高级数据结构并查集原创 2021-01-26 23:19:22 · 155 阅读 · 0 评论 -
存在负权边的单源最短路Bellman-Ford SPFA算法
Bellman-Ford算法SPFA算法1.14小结 《算法基础课》 刷题牛客*3 cf Round 102 (Div.2)A - √B - √原创 2021-01-22 12:55:55 · 417 阅读 · 0 评论 -
Floyd算法
Floyd算法基于动态规划存储:邻接矩阵d[i,j]存所有边for(int k=1;k<=n;k++){ //注意循环顺序,先k for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ d[i,j] = min(d[i,j], d[i,k]+d[k,j]; } }}d[ k , i, j] - 表示从i点只经过1~k的点到j的中间距离,k表状态,可优化掉循环结束后d[i,j]即存的最短路1.15小结 《算法基础原创 2021-01-17 00:48:20 · 83 阅读 · 0 评论 -
最短路
最短路// 约定:n - 点数, m - 边数相关定义单源最短路:求一个点到其他所有点的最短距离多源汇最短路1:多次询问 a → b 的最短距离适用算法难点建图如何将问题抽象成最短路如何定义点和边源点:起点 , 汇点:终点 ↩︎...原创 2021-01-17 00:21:10 · 155 阅读 · 0 评论 -
树与图的遍历 拓扑排序
树与图的遍历原创 2021-01-13 01:05:48 · 288 阅读 · 0 评论 -
DFS BFS
DFS顺序递归回溯:注意恢复现场剪枝:BFS区别数据结构空间特点DFSstackO(h)不具最短性回溯、剪枝BFSqueueO(2h)最短路1.11小结 《算法基础课》 组队练习补题 牛客每日两题...原创 2021-01-11 23:17:51 · 69 阅读 · 0 评论 -
STL(二)
set/multiset/map/multimap-优点:支持跟排序有关的操作set/multiseterase();输入一个数x,删除所有等于x的结点 O(k+logn), 其中k是x的个数输入一个迭代器,删除这个迭代器-核心操作lower_bound(x)/upper_bound(x);返回大于等于/大于x的最小的数的迭代器,不存在返回endmap/multimap, 两个东西映射-用途:map实现平衡树insert(); //插入的数是一个pairerase(); //输入的原创 2021-01-11 00:04:40 · 82 阅读 · 0 评论 -
STL(一)
STLvector-初始化vector<int> a;vector<int> a(n); //长度为nvector<int> a(10, 0); //长度为10,每个数初始化为0vector<int> a[10]; //定义vector数组,定义10个vectora.size(); //返回元素个数a.empty(); //是否为空以上两个函数所有容器均有,时间复杂度O(1)a.clear(); //清空a.front();/a原创 2021-01-10 00:47:46 · 142 阅读 · 1 评论 -
Hash
学习心得哈希表作用:将大的值域映射到小的0~n的范围里写法:x mod 105存储结构处理冲突的方法(1)开放寻址法:(蹲坑法)数组长度开到数据范围的2~3倍memset(h, 0x3f, sizeof h) 每个字节都是0x3f0x3f3f3f > 109int find(int x) // x存在,返回x位置;否则,返回x应在的位置int find(int x){ int t = ( x % N + N ) % N; while(h[t原创 2021-01-09 01:02:28 · 88 阅读 · 0 评论 -
并查集堆+Trie树
学习心得一、并查集功能:在近乎O(1)的时间复杂度内完成:将两个集合合并;询问两个元素是否在一个集合中。基本原理:每一个集合用树(不一定是二叉树)表示。根节点编号为集合编号。每个结点x存储父结点p[x]。基本操作:if (p[x] == x) 判断树根while (p[x] != x) x=p[x]; 求x的集合编号p[x]=y 合并两个集合(p[x] - 集合x编号,p[y] - 集合y编号)优化:搜过后直接把路径上所有结点直接指向根节点。原创 2021-01-08 00:15:00 · 135 阅读 · 0 评论 -
单调栈单调队列+KMP
学习心得一、单调栈应用范围:求序列中每一个 数 离它最近的 左/右 边的比它 小/大 的数。基本思想:类似双指针若存在 ax >= ay 且 x<y, 则ax被删除。最终序列变为严格单调。解题思路:先想暴力做法,再找规律优化二、单调队列应用范围:求长度为 n 的滑动窗口 中的最 小/大 值。优化多重背包基本思想:与单调栈类似通过删除点使得序列变为严格单调。优点:时间复杂度从暴力解法的O(n2)降为O(1)数组模拟栈队列比STL原创 2021-01-06 23:46:19 · 145 阅读 · 0 评论 -
基础的双指针位运算离散化区间合并+DP
DPcf Div.3 Round #693 补题总结1472C - Long Jumps题目分析:题意:选择数组的起始位置i, 将物品放在该 (a[i])处。当 i ≤ n 时,得a[i]分,并物品向右移a[i] 。当 i > n 时,游戏结束。求以最优的方式选择起始位置,能得到的最大分数。数据范围:104组测试样例,数组长度2*105遍历会超时…那么, DP:通过选择位置j,可假设我们得到的结果a[j]比选择位置j+a[j]得到的大公式:score( j ) = sc原创 2021-01-05 22:53:52 · 121 阅读 · 0 评论 -
基础的排序二分高精度前缀和差分+DFS
1.4小结 AcWing《算法基础课》4h cf 1400 trees *1 (120F)解题思路:求所有蜘蛛长度的总和,DFS计算每个蜘蛛的长度即可。问题:读题不细,忽略题目要求的文件输入输出 cf Div.3 组队练习 #Round 693 AB cf 1100 5题+ 1200 2题 (AcWing 785-792 替换 cf 7题)总结:计划制定存在问题,未完全按照计划实施,忽略课后题的练习,微调本周计划计划...原创 2021-01-05 00:41:41 · 147 阅读 · 0 评论