随笔分类 - 笔记
树剖总结
摘要:前言 最近被树剖整得很难受,于是有了这一篇总结。 灵感来源于这几道题:[Ynoi2017] 由乃的 OJ,[SDOI2011] 染色,[TJOI2015] 旅游。 关于树剖 树剖解决的问题一般是动态且与树上的简单路径有关,就是将树上的问题转变到链上,然后用数据结构(线段树)来维护一些复杂信息。 一般
dp做题记录
摘要:树形 dp P3177 [HAOI2015] 树上染色 初看此题时,dp 状态很明显是两维,但是合并子树时答案难于统计,然后……就不会了qwq。 既然不通,考虑改变 dp 数组的含义,记 表示当前 的子树中将 个点染黑对总答案的贡献。 但是这样直接计
动态规划及其优化
摘要:dp 树形dp 顾名思义,就是树上的 。 例题 P1352 没有上司的舞会 模板题,关注该节点是否能取。 void dp(int x){ f[x][0]=0,f[x][1]=h[x]; for(int i=head[x];i;i=e[i].next){ int y=e[i].to; dp
树的基础
摘要:树的直径 定义:树上最长的简单路径。(可能有多条) 树的直径的性质 直径两端点一定是两个叶子节点。 距离任意点最远的点一定是直径的一个端点,这个基于贪心求直径方法的正确性可以得出。 对于两棵树,如果第一棵树直径两端点为 ,第二棵树直径两端点为 ,用条边将两棵树连接
扫描线
摘要:前言 扫描线思想可以在 的时间复杂度内进行二维平面的计算,运用线段树优化可以在 的时间复杂度内解决。 简介 P5490 【模板】扫描线 以此题为例,介绍扫描线。 最直接的想法是将每个正方形的面积先加起来,最后再减去重叠部分,但是代码难度较大,不易