Skip to content

Commit

Permalink
4.23
Browse files Browse the repository at this point in the history
  • Loading branch information
dtcxzyw committed Apr 23, 2019
1 parent 33bb675 commit e3e5467
Show file tree
Hide file tree
Showing 7 changed files with 61 additions and 4 deletions.
1 change: 1 addition & 0 deletions Queue.md
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,7 @@
- [ ] UOJ#274. 【清华集训2016】温暖会指引我们前行
- [x] BZOJ 3514
- [ ] bzoj2759(LCT维护基环树,做完加总结)
- [ ] bzoj4025
# 平衡树
- [x] LOJ#516. 「LibreOJ β Round #2」DP 一般看规律
- [x] bzoj3545
Expand Down
1 change: 1 addition & 0 deletions Review/DataStructure/DataStructure.tex
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ \chapter{数据结构}
\input{DataStructure/DLX}
\input{DataStructure/HashTable}
\input{DataStructure/OldDriverTree}
\input{DataStructure/ETT}
21 changes: 21 additions & 0 deletions Review/DataStructure/ETT.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
\section{ETT}
\index{E!Euler Tour Tree}

ETT用来解决动态树结构+换根+维护子树信息的问题。
\subsection{欧拉遍历序列}
以任意一点为根DFS,将每条树边拆为两条有向边,欧拉遍历路径即遍历路径的有向边序列。

事实上这是一个环,所以支持换根。
\subsection{基本操作}
使用平衡树来维护遍历序列。
\subsubsection{link}
将两棵树并为一棵树。
\subsubsection{cut}
将一棵树分为两棵树。

该内容参考了国家集训队2014论文集黄志翱的《浅谈动态树的相关问题及简单扩展》。

留坑待补,参见Memphis的博客\footnote{
动态树拓展相关
\url{http://memphis.is-programmer.com/2015/8/7/linkcutmemphis.99293.html}
}。
13 changes: 13 additions & 0 deletions Review/DataStructure/LCT.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
\section{动态树}
\index{L!Link-Cut Tree}

{\bfseries 警告:首先考虑使用DFS序解决!}
\subsection{常规操作}
动态树是一堆splay组成的森林,主要以$access$$makeRoot$操作为基础,
可以实现$link,cut,split,find$等功能。
Expand Down Expand Up @@ -288,3 +290,14 @@ \subsubsection{LCT维护黑白连通块}
bzoj3637: Query on a tree VI【LCT】\\
\url{https://blog.csdn.net/cdsszjj/article/details/80332588}
}。
\subsubsection{LCT离线维护动态图连通性}
给定加边与删边操作序列,期间多次询问两点的连通性。
关键在于当连边后会出现环时如何将其变为树。考虑一种贪心的做法,将环上最早被删除的边删掉,
这样做将不会影响到图的连通性。而删边时间可以离线预处理。
该方法参考了国家集训队2014论文集黄志翱的《浅谈动态树的相关问题及简单扩展》。
\subsubsection{链权翻转}
给LCT的每条链再使用一个splay来维护链权。
均摊复杂度仍为$O(\lg n)$
1 change: 1 addition & 0 deletions Review/Other/TricksAndIdeas.tex
Original file line number Diff line number Diff line change
Expand Up @@ -521,6 +521,7 @@ \subsection{注意事项/常见转化/思想}
\item 方差计算的转化:\begin{displaymath}
\sum{(x_i-\bar{x})^2}=\sum{x_i^2}-n\bar{x}^2
\end{displaymath}
\item 考虑将一些依赖/包含关系描述为图/树/DAG的形式。
\end{itemize}
\subsection{比赛注意事项}
\subsubsection{Linux/GCC工具}
Expand Down
20 changes: 19 additions & 1 deletion Review/Summary/Time.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ \section{时间轴有关问题}
\subsection{静态问题}
\begin{itemize}
\item 对固定区间的结果有影响:将存在转化为扫描线插入+删除,变为动态问题。
\item 可持久化操作:所有版本形成了一棵树,可以使用DFS序将操作展开为序列。
\end{itemize}
\subsection{动态问题}
在询问中带有修改操作,修改对后续的询问有影响,修改之间对询问的贡献独立。
Expand All @@ -20,6 +21,22 @@ \subsection{动态问题}
从右到左扫描后半部分的询问,使用时光倒流将前半部分的删除转化为插入。再
套用仅插入的做法,以$\lg^2$的代价除去动态插入删除操作。
\end{itemize}
\item 操作将区间内的数变为同一个数

下面介绍将此类操作改为添加与撤销操作的方法。

建立一棵以位置为下标的线段树,将$[l,r]$的元素修改时,向$[l,r]$处插入时间+新元素
标记,若当前节点已有标记则下推标记并清除,当递归到整层时取出子树内的所有标记并清除。

记当前时间为$j$,对于取出的时间为$i$的标记,将其转化为两个操作:
\begin{itemize}
\item 在时间$i$处执行覆盖操作
\item 在时间$j$处撤销操作
\end{itemize}

构建时间复杂度$O(m\lg^2 n)$,实测时间复杂度接近$O(m\lg n)$

有了撤销操作后,覆盖操作可以转化为区间加减与区间和查询解决。
\end{itemize}
\subsection{时间分治技巧}
\begin{itemize}
Expand All @@ -28,4 +45,5 @@ \subsection{时间分治技巧}
\item 分治计算一边对另一边的贡献时,考虑不建立数据结构,使用双指针法线性计算
\end{itemize}

该内容参考了国家集训队2013论文集许浩然的《浅谈数据结构题的几个非经典解法》。
该内容参考了国家集训队2013论文集许浩然的《浅谈数据结构题的几个非经典解法》与
国家集训队2014论文集中徐寅展的《线段树在一类分治问题上的应用》。
8 changes: 5 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,8 @@
- [ ] border_tree
- [ ] Perfect Hash Function
- [ ] 五边形数定理
- [ ] Link-Cut-Memphis[By Memphis](http://memphis.is-programmer.com/2015/8/7/linkcutmemphis.99293.html)
- [ ] Self-Adjusting Top trees(AAA树)
# 集训队论文/WC营员交流学习(省选后)
## 2019
- [ ] 模拟费用流 laofu
Expand Down Expand Up @@ -375,9 +377,9 @@
## 2014
- [ ] 对置换群有关算法的初步研究 岑若虚
- [ ] 浅谈维护多维数组的方法在数据结构题中的应用 梁泽宇
- [ ] 线段树在一类分治问题上的应用 徐寅展
- [ ] 根号算法——不只是分块 王悦同
- [ ] 浅谈动态树的相关问题及简单拓展 黄志翱
- [x] 线段树在一类分治问题上的应用 徐寅展
- [x] 根号算法——不只是分块 王悦同
- [x] 浅谈动态树的相关问题及简单拓展 黄志翱
- [ ] 随机化算法在信息学竞赛中的应用 胡泽聪
- [ ] 寻找第 k 优解的几种方法 俞鼎力
## 2013
Expand Down

0 comments on commit e3e5467

Please sign in to comment.