基础算法学习笔记
文章平均质量分 64
算法模板,一些例题,主要来源Acwing,洛谷,算法书,以及csp衍生
bulibuli蛋
nuaa->seu bulibuli蛋
展开
-
树形背包dp P2014 [CTSC1997] 选课
链式前向星:链式前向星 详解_ReverieZH的博客-CSDN博客_链式前向星更适合层次遍历了。edge数据结构和第一层循环遍历都是链式前向星的知识点。树形dp一般是dfs+dp,这里分析一下题意,在有限的选课数中学分要达到最大,可以抽象成背包,背包容量为选课数,value相当于学分数。状态转化式如下:dp[i][j]表示,在根为i的子树中,选择了j门课的总学分数背包dp的思想是遇到物品,比较选和不选哪个价值更大,这边选课也一样。看选和不选哪个学分多。初始状态是j=1,就是单选一门课的状态。本题将0作为根原创 2022-07-11 20:33:29 · 309 阅读 · 0 评论 -
小顶堆应用 [NOIP2004 提高组] 合并果子
模板:堆排序_guanlovean的博客-CSDN博客_堆排序 原题:https://www.luogu.com.cn/problem/P1090 思路:关键在于每次找出最小的两个数相加。一下就想到了小顶堆,排一轮序就能完成计算复杂度为O(nlog2n)比O(n^2)强。具体细节见注释。...原创 2022-07-09 16:31:34 · 245 阅读 · 0 评论 -
BFS+优先队列 P1126题解 机器人搬重物
代码自己写了一遍,有几个bug调不出,于是参考了这位大佬的题解:题解 P1126 【机器人搬重物】 - 林则徐 的博客 - 洛谷博客然后顺利AC了。呜呜呜~先看题目吧!思路很简单,就是BFS。需要注意的几个点:判重:这里我原本只考虑了x,y坐标,但是这样可能会漏解!...原创 2022-05-08 14:09:35 · 769 阅读 · 0 评论 -
BFS+优先队列 P7775 [COCI 2009-2010 #2] VUK
题目思路这道题有一句话特别难懂:帮忙找出这样一条从V到J的路径,使得 Vjekoslav 在途中离它最近的树的距离的最小值最大。最近 最小值 最大 我直接晕了分析一下:最近:t棵树中最近的那棵tree。 最小值:离tree最近的那个点p和tree的距离。 最大:使p和tree的距离最大。意思就是,选择一条v到j的路径,使路上的每个点都和树离得越远越好。代码注释多多;数据结构和思路都写得比较详细。#include<bits/stdc++.h> usin..原创 2022-05-06 20:57:44 · 888 阅读 · 0 评论 -
图论 拓扑排序
QWQ 我一定要好好学图论原理简单复述一下这篇博客的内容:什么是拓扑排序_ztenv的博客-CSDN博客_拓扑排序在图论中,拓扑排序(Topological Sorting)是一个有向无环图(DAG, Directed Acyclic Graph)的所有顶点的线性序列。且该序列必须满足下面两个条件: 每个顶点出现且只出现一次。 若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。 举个例子:找出入度为0的节.原创 2022-05-04 21:32:25 · 1817 阅读 · 0 评论 -
图和树的存储和遍历
邻接矩阵存图存入一条有向边ab长度为x;g[a][b]=x;const int maxv=1000;int g[maxv][maxv]={0};int a,b,n,m;//n定点数,m边数 cin>>n>>m; //存图 for(int i=0;i<m;i++){ cin>>a>>b>>g[a][b];}dfs——穷尽每一条路比如下图:从v0出发,经过第一条路径,到v3发现无路可走; 回退到v1,开原创 2022-03-13 20:19:15 · 612 阅读 · 0 评论 -
并查集+kruskal 模板
这篇博客原理讲得巨详细:算法学习笔记(1) : 并查集 - 知乎本博客为上述文章的简洁版。食用顺序:判断类:1)初始化 2)按要求合并 3)查询是否在同一集合。计算类:1)初始化 2)合并时计算目录路径压缩并查集按秩合并并查集(使深度尽量小)最小生成树——并查集版路径压缩并查集初始化void init(int n){ for (int i = 1; i <= n; ++i) fa[i] = i;}查询祖宗节点:将沿途每...原创 2022-03-07 13:26:26 · 170 阅读 · 0 评论 -
矩阵快速幂 原理 模板
一、矩阵乘法矩阵A*B=C,公式: ,三重循环。前提条件:n*n的矩阵看代码:const int N=100;int c[N][N];void multi(int a[][N],int b[][N],int n)//n是矩阵大小,n<N{ memset(c,0,sizeof c); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) for(int k=1;k<=n;k++)原创 2022-03-03 17:24:39 · 283 阅读 · 0 评论 -
Trie树——字典树,单词查找树
给出n个单词,询问q次,看某单词是否在这些单词中,单词最长为l。如果使用暴力遍历的话,复杂度可达到O(n*q*l),很显然,一般会超时的。因此,我们发现了Trie树。Trie树是个什么样的数据结构int son[N][26], cnt[N], idx;// 0号点既是根节点,又是空节点// son[][]存储树中每个节点的子节点// cnt[]存储以每个节点结尾的单词数量idx:插入顺序标号,全局变量son[p][x]=i:p表示新插入字母的前一个字母的标号,x表示新字原创 2022-02-24 22:46:32 · 206 阅读 · 0 评论 -
KMP算法图解易懂版(内含模板代码)
KMP保姆级图解教程,通俗易懂,从0学kmp,从原理到例子,从手算到代码什么是kmp?在主串中快速找到想要的子串。解决的问题就是在字符串(也叫主串)中的模式(pattern)定位问题。几个概念公共子串:模式串与主串左边相匹配的串公共前后缀:公共子串中相同的字符串,前者为前缀,后者为后缀,注意是在比较指针以左...原创 2022-02-21 22:00:23 · 1645 阅读 · 1 评论 -
单链表模板+例题
单链表数组版模板题!原创 2022-02-10 22:37:21 · 710 阅读 · 0 评论 -
状态压缩DP(入门)
状态压缩DP(入门),刚刚学习状压dp的一些粗浅认知原创 2022-02-09 16:26:32 · 2446 阅读 · 1 评论 -
算法基础代码模板——AcWing学习笔记(一)
acwing基础算法模板学习笔记,加入了一些自己的理解原创 2022-01-23 00:20:52 · 267 阅读 · 2 评论