09 2024 档案

摘要:由于是在树上搞的 ds 所以考察数据结构本身性质偏多,需大力注重细节。 思想 考虑将一颗树的链划分成若干个区间进行维护。 这种划分方式叫做剖分。 约束 一颗有根树(有时要求换根但不是真正换根) 每个点恰好包含在一条剖出的链中(若被多条链同时包含则需要同时维护多条链,修改多余的可能影响复杂度) 剖分出 阅读全文
posted @ 2024-09-09 21:34 end_switch 阅读(9) 评论(0) 推荐(0) 编辑
摘要:动态开点 当正常堆式建树开不下时(nV 过大),通常使用动态开点。 例题 P2781 传教 算是很板了吧? 每次修改的时候,若当前访问节点未建立则新建节点并回溯至上一个节点记录左右儿子。实测写 & 引用或 struct 是很方便的。 要十分注意的是在 work 函数(单点修改 阅读全文
posted @ 2024-09-06 22:32 end_switch 阅读(25) 评论(0) 推荐(0) 编辑
摘要:并查集 普通并查集 路径压缩写法: struct Union_Find_Set { int f[N]; inline void init() { for(int i = 1 ; i <= n ; ++ i) f[i] = i; } inline int find(int x) { if(x != f 阅读全文
posted @ 2024-09-04 23:14 end_switch 阅读(8) 评论(0) 推荐(0) 编辑
摘要:问题模型 给定 a,b 两个长度为 n 的序列,求下列式子最大值: i=1nai·xii=1nbi·xi其中 \(\forall i \in [1, n], x_i \in \le 阅读全文
posted @ 2024-09-02 22:50 end_switch 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示