模板
文章平均质量分 90
Mars_Dingdang
Mars
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
搜索优化——实用的算法,玄学的复杂度
本文主要通过例题讲述搜索的几种优化方式,包括 DFS 的迭代加深,IDAstar,BFS 的优先队列优化,双向 BFS 以及 Astar。 一、广度优先搜索 1.1 双端队列 BFS 例题1 求第 k+1k+1k+1 长边最短路。题目链接 由于边权 w≤106w\le 10^6w≤106,可以二分得到第 k+1k+1k+1 长边的最短可能长度。因此,本题转换成了求第 k+1k+1k+1 长边长度为 lenlenlen 的可能性。时间复杂度要求 O(nlogw)O(n\log w)O(nlogw),因此需要原创 2021-04-07 18:00:55 · 890 阅读 · 0 评论 -
树的序列化——浅谈 dfn 与欧拉序列
dfndfndfn 序列 定义:dfn[u] 表示 u 在 dfs 时第几个访问到。例如 dfs 序列为 1423, 则 dfn 序列为 1342。 特点: 祖先总在子孙前 子树总是连续段:以 u 为根的子树为区间 [dfnu,dfnu+szu−1][dfn_u,dfn_u+sz_u-1][dfnu,dfnu+szu−1]。 不能直接复原出树的结构,但借助 szusz_uszu 可以复原。 struct subTree{int L,R;}T[maxn];//子树区间 int dfn[max原创 2021-03-06 09:59:39 · 2417 阅读 · 0 评论 -
单调队列——定长区间最值问题
本文同步发表于我的 洛谷博客。 一、引入 1.1 定长滑窗问题: 给出一列 nnn 个正整数,和一个固定长度为 kkk 的滑动窗口, 从左到右在数列中滑动这个窗口,找到数列中每个窗口内的最大值。 即对于给定数列 A1∼AnA_1\sim A_nA1∼An (1≤n≤107)(1\le n\le 10^7)(1≤n≤107),求每一个 fi=minj=i−k+1iAjf_i=\min\limits_{j=i-k+1}^{i}A_jfi=j=i−k+1miniAj。 二、数据维护 2.0 线段树,R原创 2021-02-26 20:23:42 · 809 阅读 · 0 评论
分享