• ACM
  • 数据结构专题训练总结

  • @ 2024-1-7 11:30:18

第一组(罗志豪+何正+赵研淞)

罗志豪

训练内容:

单调栈/单调队列 + 并查集 + 最小生成树 + ST表 + 线段树 + 扫描线 + 树状数组 + 字典树 + 可持久化0/1tree + 分块 + 树链剖分 + 平衡树 + LCT + 整体二分

模板:

  1. 单调栈/队列
  2. 并查集
  3. 最小生成树
  4. ST表【静态区间最值】
  5. 线段树
  6. 扫描线
  7. 【模板】 树状数组1 blog
  8. 【模板】 树状数组2 blog
  9. 【模板】二维树状数组blog
  10. 【模板】 字典树 blog
  11. 最大异或和 题解
  12. 【模板】 教主的魔法 题解
  13. 【模板】 重链剖分/树链剖分 blog
  14. 【模板】普通平衡树 blog
  15. 【模板】动态树 blog
  16. 【模板】Dynamic Rankings blog
  17. 【模板】可持久化线段树
  18. 模板文档【已弃用】

所有训练题目:

应该少了部分题

题目集

收获:

  1. 在针对性学习了数据结构专题后,还是有了明显的收获;学习到了更多的知识,也使得我对程序设计竞赛如何去学有了一个更清晰的方向。很多知识可能之前学过但用的还是较少, 不过经过这次训练我发现很多知识点是相互链接的 -> LCT维护动态的splay树[离散化] + 操作二分 + 区间操作 = 整体二分 ,、 离散化+线段树=扫描线并查集+贪心=最小生成树(Kruskal)DFS+线段树+dfs规则=树链剖分……。
  2. 很多题目有多种做法,比如借教室 题解 可以用 二分+差分 、线段树维护最小值 、 分块维护最小值,
  3. 积累了不少的模板和巧妙的用法(如并查集判环)
  4. 对各个算法有了更深入的了解(部分) : 区间更新问题 -> 线段树/树状数组/分块/莫队; 树上祖先/子树问题 -> dfs序/树链剖分 ; 二进制区间问题 -> 可持久化0/1tree ; 如果树的结构会发生变化 -> LCT ; 不发生变化 -> Splay。

不足:

  1. 模板虽然是积累了,太多了,很多模板都无法背下来,只能看着打,而且有的题需要在模板上改动的,有的时候反应不过来(比如整体二分模板为区间第k小,改成区间第k大的时候就被卡了一下)。
  2. 一些需要绕一圈的题目始终会被卡一下,以为只需要一个算法,但实际上可能需要不同的算法相互配合解决。
  3. 进度的确太慢了,好多内容。
  4. 有些题/算法感觉不容易理解,看题解都看了几个小时……

赵研淞

模板

收获:

在处理区间类,集合和树上问题时有了更多的思路,积累了一些实现技巧。 对于思维也有了一定的提升,比如ST表在查询最值问题时通过将长度分成两段分别求出最值再求出总的区间最值。在用线段树求解问题时,决定划分的区间存什么值时,可以看这个值能不能由左右儿子求出来,如果不能就在结构体中添加额外信息。同时还锻炼了查资料的能力,要多找多看,结合视频和博客,找到最适合自己的去看。

不足:

现阶段对某些算法的理解还不够深,比如LCT,只能做出来模板题。 思维还有待提高,有些点要想很久,导致学习进度很慢,还有部分算法没看。 算法实现也有些不熟练,在一些代码细节上容易出错。

0 条评论

目前还没有评论...