随笔分类 - 算法基础
闫学灿算法基础知识
摘要:三角形的最大路径和 #include <string> #include <iostream> #include <cctype> #include <algorithm> #include <vector> #include <unordered_map> #include <cstring> #
阅读全文
摘要:  ![i
阅读全文
摘要:动态规划:数位统计DP(计数问题) 数位统计DP AcWing 338. 计数问题 给定两个整数 \(a\) 和 \(b\),求 \(a\) 和 \(b\) 之间的所有数字中 \(0 \sim 9\) 的出现次数。 例如,\(a=1024,b=1032\),则 \(a\) 和 \(b\) 之间共有
阅读全文
摘要:当读入一行为0 0时,表示输入终止,且该行不作处理。 输出格式 每组数据输出一个结果,每个结果占一行。 每个结果包含十个用空格隔开的数字,第一个数字表示‘0’出现的次数,第二个数字表示‘1’出现的次数,以此类推。 数据范围 0<a,b<100000000 输入样例: 1 10 44 497 346
阅读全文
摘要:DFS、BFS算法及运用 DFS(深度优先搜索) 使用栈来实现,俗称暴搜,最重要的是顺序以及恢复现场以及递归出口 空间复杂度:\(O(h)\) 不具有最短性,适用于比较奇怪且空间要求比较高的题目。 842.排列数字(全排列) 给定一个整数 \(n\) ,将数字 \(1 \sim n\) 排成一排,将
阅读全文
摘要:动态规划:状态压缩 (蒙德里安的梦想、最短Hamilton路径) 状态压缩DP AcWing 291.蒙德里安的梦想 求把 \(N* M\) 的棋盘分割成若干个 \(1*2\) 的的长方形,有多少种方案。 例如当 \(N=2,M=4\) 时,共有$5$ 种方案。当 \(N=2,M=3\) 时,共有3
阅读全文
摘要:动态规划:区间DP(石子合并) 、 计数类DP(整数划分) 区间DP AcWing 282. 石子合并 设有 \(N\) 堆石子排成一排,其编号为 \(1,2,3,…,N\)。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这 \(N\) 堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代
阅读全文
摘要:动态规划:线性DP(数字三角形、最长上升子序列、最长公共子序列、最短编辑距离) AcWing 898.数字三角形 给定一个如下图所示的数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上的数字的和最大。 输入格式 第一行包含整
阅读全文
摘要:#动态规划:背包问题(01背包、完全背包、多重背包、分组背包) AcWing2. 01背包问题 有 \(N\) 件物品和一个容量是 \(V\) 的背包。每件物品只能使用一次。 第 \(i\) 件物品的体积是 \(v_i\),价值是 \(w_i\)。 求解将哪些物品装入背包,可使这些物品的总体积不超过
阅读全文