
算法
文章平均质量分 73
算法
karshey
平平无奇打工人。
展开
-
【图论算法】零基础最小生成树学习与总结
参考资料和引用来源数据结构–最小生成树详解AcWing 858. Prim算法求最小生成树:图解+详细代码注释(带上了保存路径)AcWing 858. Prim算法求最小生成树 的视频AcWing 859. Kruskal算法求最小生成树什么是最小生成树现在假设有一个很实际的问题:我们要在n个城市中建立一个通信网络,则连通这n个城市需要布置n-1一条通信线路,这个时候我们需要考虑如何在成本最低的情况下建立这个通信网?于是我们就可以引入连通图来解决我们遇到的问题,n个城市就是图上的n个顶点,然原创 2022-01-14 20:25:34 · 582 阅读 · 0 评论 -
【动态规划算法】零基础区间DP自学笔记
一个初学者的笔记。区间dp的两种写法迭代式&记忆化搜索迭代式://第一维循环区间长度 第二维循环左端点(范围是右端点<=n) for(int len=1;len<=n;len++) for(int L=1;L+len-1<=n;L++) R=L+len-1;//求右端点 或:来自for(int len = 1;len<=n;len++){//枚举长度 for(int j = 1;j+len<=n+1;j++){//枚举起点,end原创 2022-01-14 15:15:12 · 288 阅读 · 0 评论 -
【数据结构】线段树笔记2
【数据结构】零基础线段树笔记1参考和引用:线段树讲解 本博客主要是这个的笔记。线段树相关知识线段树的结构N的原数组,要4N的大小去存储线段树原因:看线段树讲解吧。代码相关更新当前节点 push_up是更新当前节点的操作。有两种写法:如果是维护区间最大值,则区间的最大值是max(左区间.maxn,右区间.maxn);如果是维护区间和值,则直接加和//维护区间最大值void push_up1(int root){ nodes[root].maxn=max(nodes[roo原创 2022-01-10 20:23:18 · 375 阅读 · 0 评论 -
【数据结构】零基础线段树笔记1
是自学的笔记。引用和参考:关于线段树B站视频:【数据结构】线段树(Segment Tree) 灯神讲得好!!引入假设我们现在有一个非常大的数组,我们要反复地做两个操作:求某个区间的和。O(n)修改数组中某个值。O(1)如果要做很多次,时间复杂度会很高。我们怎么想办法降低求某个区间的和的复杂度呢?我们建立一个和原数组a一样大的数组s,s是a的前缀和。如果想求[L,R]这个区间的和,只需要求S[R]-S[L-1]即可。 O(1)但是如果想要更新数组的值,又变复杂了。O(n)这两种方原创 2022-01-10 16:14:11 · 367 阅读 · 0 评论 -
【数据结构】零基础树状数组笔记
参考和引用树状数组学习笔记树状数组 数据结构详解与模板(可能是最详细的了)树状数组(简单介绍)树状数组小结AcWing 241. 楼兰图腾 的题解树状数组的作用树状数组,也叫做二叉索引树,或Fenwick树。可以高效实现两个操作:数组前缀和的查询单点更新——某个点增加/减少x(是改变多少)时间复杂度朴素算法单点修改:O(1)区间查询:O(n)使用树状数组单点修改:O(logn)区间查询:O(logn)容易求前缀和,也容易求区间和,如:已知nums=[1,2,3,4,原创 2022-01-09 21:55:54 · 447 阅读 · 0 评论 -
【图论】最短路算法:Dijkstra、bellman-ford、spfa、Floyd 和拓扑排序
是AcWing算法基础课关于基本图论算法的笔记。AcWing YYDS!朴素版Dijkstra-849. Dijkstra求最短路 I(稠密图)参考步骤:初始化,dis[1]=0,dis[n]=0x3f3f3f3f.——起点到起点的距离为0,到其他点的距离为正无穷(这里1是起点)迭代:n次迭代确定每个点到起点的最小值输出答案其中:dist[n]表示起点到点n的距离st[n]表示点n到起点的最短距离是否已经确定每次找还没有确定最短距离的点中的最短的那个进行更新:可以看这里的演示原创 2022-01-09 19:47:39 · 1068 阅读 · 0 评论 -
7-1 旅行售货员 (10 分) TSP 回溯法
输入:30 2 11 0 22 1 0输出:3参考代码:个人认为难点主要在于swap。比如说,现在到了第u层,我们想知道从第u-1步到第u步的路径(在数组x里),假设u==2,那就是求第1步到第2步的路径。第1步为x[1],第2步可以为x[2],x[3],x[4]…这就是TSP函数里else中的那个循环。把第2步的候选数swap换到u这个位置代表这是u这层选择的路径,然后往下走。#include<bits/stdc++.h>using namespace std;.原创 2021-11-24 22:26:43 · 983 阅读 · 0 评论 -
labuladong算法小抄笔记
学习算法和刷题的框架思维一句话总结:从整体到细节,自顶向下,从抽象到具体的框架思维是通用的。数据结构的存储方式:数组和链表才是结构基础,其他的数据结构都是在它们上的特殊操作。二者的优缺点:...原创 2021-09-05 21:20:38 · 536 阅读 · 0 评论 -
【算法】动态规划DP自学笔记 入门:基本知识+经典例题
简述动态规划,是利用历史记录来避免重复计算的一种算法,是求解决策过程最优化的过程。一般用一维数组/二维数组来保存历史记录。一般动态规划有三个步骤:定义数组元素的含义,一般求什么就定义成什么找出数组元素之间的关系式,类似归纳法找出初始值例题1 青蛙跳台阶一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法?由题意知:青蛙可以从n-1的位置到n,也可以从n-2的位置到n,因此,f(n)=f(n-1)+f(n-2);初始化:由于变量最小为0,也易得:f(原创 2021-08-17 20:58:24 · 5045 阅读 · 6 评论 -
【算法】搜索练习
DFS注意搜索的顺序,是以树的形式。Lake Counting原题输入10 12W........WW..WWW.....WWW....WW...WW..........WW..........W....W......W...W.W.....WW.W.W.W.....W..W.W......W...W.......W.输出3题意:有几个水池。思路:DFS,遇到连接的水池就继续搜,断开之后就记录。用dis[8][2]代表8个方向。范围是从1–n(列),1–m(行)。原创 2021-07-05 10:29:56 · 193 阅读 · 2 评论 -
线段树 笔记
题1/*https://www.luogu.com.cn/problem/P1198*/ #include <bits/stdc++.h>using namespace std;const int N = 1e6 + 7;int m,p;struct Node { int l, r; //线段树中每个节点的左端点和右端点 int v;//[l,r]中最大的数} tr[N];void pushup(int u) {//由子节点的信息更新所有祖先节点的信息 tr[u].原创 2021-05-22 19:44:57 · 244 阅读 · 0 评论 -
图论 笔记
关于存图如果是有权值的边,可以用pair#define pii pair<int,int>用first存点,用second存权值。如:与a相邻的有b点,权值为c。g[a].push_back({b,c});若是要遍历与u点相连的点://1vector<pii>g[N];for(int i=0;i<g[u].size();i++){ pii j=g[u][i]; cout<<g[u][i].first<<" "<<原创 2021-05-16 14:56:59 · 171 阅读 · 0 评论 -
【算法】高精度算法:加减乘除(全)
看的视频在这里。加法思想:用数组模拟高精度。算法核心:c[i]+=a[i]+b[i];c[i+1]=c[i]/10;c[i]=c[i]%10;注意:是c[i]+=a[i]+b[i],是累加。例题:求a+b, a、b范围都<=10^500;注意:1、将字符串转成数组模拟大数时要将字符转置,这样才方便做加法,因为数学是向右对齐做加法的,而数组是从左到右的。如:1234+789==1234+0789 对齐相加,而不是1234+7890对齐相加。故转置即向右对齐,这样进位就向左(向原创 2021-02-07 16:10:17 · 468 阅读 · 1 评论 -
【算法】排序(sort排序函数和冒泡、选择、插入、快速排序)
记录目前学到的4种排序,sort函数排序,冒泡排序,选择排序,插入排序。sort函数排序1、对数组进行排序,要加函数头#include<algorithm>;或者可以直接万能头#include<bits/stdc++.h>;2、sort函数的参数,第一个是要排序的开始的地方,第二个是要排序的结尾+1的地方;如对一个a[10]全部排序,则函数为:sort(a,a+10);其中a即a[0],a+10即a[9]+1;代码如下:#include<iostream>#原创 2020-11-21 17:00:17 · 555 阅读 · 0 评论 -
【算法】深度优先搜索DFS 入门:基本知识+经典例题
自学DFS看的视频:小甲鱼:讲原理青岛大学-王卓:讲的较为全面原创 2020-11-21 11:12:59 · 3531 阅读 · 2 评论