随笔分类 - 笔记qwq
摘要:我们通常采用递归的方式实现树形dp。 对于每个节点,先递归在它的每个子节点上进行dp,在回溯时,从子节点向根节点进行状态转移。 顺序一般为从叶子结点到根节点递推。 以下是写的一些树形dp题目: 一. P1352 没有上司的舞会 以子树的根作为dp状态的第一维。容易发现,每个员工是否参加至于他的上司是
阅读全文
摘要:8月集训学了权值线段树,当时没怎么加强训练。 国庆刚好开始有时间,巩固巩固。补上学习笔记。 首先介绍权值树。其本质是一个记录每个数出现次数的线段树,也就是由桶建成的树。 接下来介绍各种操作。 1.插入。 由于统计的是出现次数,从这个数往上依次加1即可。 void insert(int x,int l
阅读全文
摘要:让我们来一步一步理解! 以下是源于oiwiki的一些解释: 线段树通过将每个长度不为1的区间划分至左右两个区间。易得,时间复杂度为O(logn)相比树状数组其可操作性更强。 1.向上更新 void push_up(int rt){//向上更新 sum[rt] = sum[rt << 1] + sum
阅读全文
摘要:等我写完。 普通fhq treap: enum { Maxn = 1000005 }; struct FHQTreap { int lson[Maxn], rson[Maxn], data[Maxn]; int rnd[Maxn], sze[Maxn], root, tot, seed; FHQTr
阅读全文