![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Acwing
nullwh
这个作者很懒,什么都没留下…
展开
-
Acwing算法基础课学习笔记(十八)--贪心之排序不等式&&绝对值不等式&&推公式
排队打水#include <iostream>#include <algorithm>using namespace std;const int N = 100010;int n;int t[N];int main(){ scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &t[i]); sort(t, t + n);原创 2020-10-04 21:23:29 · 368 阅读 · 0 评论 -
Acwing算法基础课学习笔记(九)--搜索与图论之Prim&&Kruskal&&染色法判定二分图&&匈牙利算法
图论的最后一节,主要讲最小生成树和二分图。常考的是最小生成树,二分图偶尔也会考到。Prim算法求最小生成树最小生成树一般都会用在无向图问题上。/*S:当前已经在联通块中的所有点的集合1. dist[i] = inf2. for n 次 t<-S外离S最近的点 利用t更新S外点到S的距离 st[t] = truen次迭代之后所有点都已加入到S中联系:Dijkstra算法是更新到起始点的距离,Prim是更新到集合S的距离*/#include <iostr原创 2020-09-14 11:28:40 · 179 阅读 · 0 评论 -
Acwing算法基础课学习笔记(八)--搜索与图论之最短路问题-Dijkstra&&bellman-ford&&spfa&&Floyd
最短路问题是一个比较大的问题,我们将花一节课的时间来介绍:原创 2020-09-13 20:08:07 · 228 阅读 · 0 评论 -
Acwing算法基础课学习笔记(七)--搜索与图论之DFS&&BFS&&树与图的深度优先遍历&&树与图的广度优先遍历&&拓扑排序
来到第三章的内容,搜索与图论。排列数字#include<iostream>using namespace std;int n; //需要搜索的个数const int N = 10;int path[N]; //path[]用于保存路径bool st[N]; //用于记录 该步是否已经走过,true则表示被用过void dfs(int u){ if (u == n) //一条路搜索完成 { for (in原创 2020-09-10 21:47:07 · 223 阅读 · 0 评论 -
Acwing算法基础课学习笔记(六)--数据结构之Hash表&&STL简介
来到数据结构章节的最后一节课,主要内容是哈希表和STL。模拟散列表首先要理解什么是哈希。其实之前的课讲过的离散化就是一种特殊的哈希方式,这里介绍的是一般的哈希方式。算法题中对哈希的操作一般只有添加和查找;删除一般不会涉及,非要进行删除操作的话,也不是真的删除,而是用一个bool变量进行标记即可。...原创 2020-09-09 21:23:40 · 259 阅读 · 0 评论 -
Acwing算法基础课学习笔记(五)--数据结构之Tire&&并查集&&&堆
Trie字符串统计#include <iostream>using namespace std;const int N = 100010;int son[N][26], cnt[N], idx;//下标是0的点,既是根节点,又是空节点char str[N];void insert(char str[]){ int p = 0;//从根结点开始遍历 for (int i = 0; str[i]; i++) { int u = str[i] - 'a'; if (原创 2020-09-08 23:17:07 · 247 阅读 · 0 评论 -
Acwing算法基础课学习笔记(四)--数据结构之单链表&&双链表&&模拟栈&&模拟队列&&单调栈&&单调队列&&KMP
单链表算法题中最常考的单链表就是邻接表(用来存储图和数),比如最短路问题,最小生成树问题,最大流问题。双链表用于优化某些问题。利用数组来表达单链表:存储值和指针的两个数组利用下标进行关联。需要注意的是,head不是节点,只是指向某个节点的指针。head存的是链表第一个点的下标,形象地看就好像是指向了头结点。这里贴一个非常有趣的题解#include <iostream>using namespace std;const int N = 100010;int n;int h原创 2020-09-08 14:48:42 · 214 阅读 · 1 评论 -
Acwing算法基础课学习笔记(三)--基础算法之双指针算法 && 位运算 &&离散化 &&区间合并
最长连续不重复子序列双指针算法的核心在于优化,通常把O(n2)O(n^2)O(n2)优化成了O(n)O(n)O(n)。而且之前的快排和归并其实也用了双指针的思想。根据观察发现,当使用i,j两个快慢指针表示当前的指针移动到i的最长不重复序列时候,具有单调性,即i向后移动,j必然向右或者不动,不可能向左移动,这一单调性质导致可以使用双指针算法。在双指针算法中,一个指针扫描整个数组而移动,关键如何找到对应的另一个指针移动的位置,在本题中,我们定义i为块指针,j为慢指针,j的位置定义为i对应的最长不重复序列原创 2020-09-04 16:58:36 · 207 阅读 · 0 评论 -
Acwing算法基础课学习笔记(二)--基础算法之高精度 && 前缀和差分
高精度加法原创 2020-09-03 19:31:03 · 181 阅读 · 0 评论 -
Acwing算法基础课学习笔记(一)--基础算法之排序&&二分
快速排序快速排序最大的坑就在于边界值的处理,y总给的这个板子还是很牛逼的!#include <iostream>using namespace std;const int N = 1e6+10;int n;int arr[N];void quickSort(int arr[], int l,int r){ if(l >= r) return; int x = arr[(l + r + 1)/2], i = l - 1, j = r + 1;原创 2020-09-02 16:45:45 · 322 阅读 · 0 评论