「算法笔记」树形 DP】的更多相关文章

一.树形 DP 基础 又是一篇鸽了好久的文章--以下面这道题为例,介绍一下树形 DP 的一般过程. POJ 2342 Anniversary party 题目大意:有一家公司要举行一个聚会,一共有 \(n\) 个员工,其中上下级的关系通过树形给出.每个人都不想与自己的直接上级同时参加聚会.每个员工都有一个欢乐度,举办聚会的你需要确定邀请的员工集合,使得它们的欢乐度之和最大,并且没有一个受邀的员工需要与他的直接上级共同参加聚会.\(n\leq 6000\). Solution: 考虑一个子树往上转…
一.数学期望 1. 由来 在 \(17\) 世纪,有一个赌徒向法国著名数学家帕斯卡挑战,给他出了一道题目:甲乙两个人赌博,他们两人获胜的机率相等,比赛规则是先胜三局者为赢家,一共进行五局,赢家可以获得 \(100\) 法郎的奖励.当比赛进行到第四局的时候,甲胜了两局,乙胜了一局,这时由于某些原因中止了比赛,那么如何分配这 \(100\) 法郎才比较公平? 甲输掉后两局的可能性只有 \(\frac{1}{2} \times \frac{1}{2}=\frac{1}{4}\),也就是说甲赢得后两局或…
一.关于数位 dp 有时候我们会遇到某类问题,它所统计的对象具有某些性质,答案在限制/贡献上与统计对象的数位之间有着密切的关系,有可能是数位之间联系的形式,也有可能是数位之间相互独立的形式.(如求满足条件的第 K 小的数是多少,或者求在区间 [L,R] 内有多少个满足限制条件的数等) 常见的在 dp 状态中需要记的信息:当前位数.与上界之间的关系(从高到低做这个信息为 0/1,即当前与上界相等/小于上界.往往数位 dp 的对象是 0 到某个上界 R,为了统计这个范围的信息,我们需要保证从高位往低…
一.简介 前置知识:多项式乘法与 FFT. FFT 涉及大量 double 类型数据操作和 \(\sin,\cos\) 运算,会产生误差.快速数论变换(Number Theoretic Transform,简称 NTT)在 FFT 的基础上,优化了常数及误差. NTT 其实就是把 FFT 中的单位根换成了原根. NTT 解决的是多项式乘法带模数的情况,可以说有些受模数的限制,多项式系数应为整数. 二.原根 与 NTT 「算法笔记」基础数论 2 中提及了原根的部分内容. 对于质数 \(p\),若…
一.关于状压 dp 为了规避不确定性,我们将需要枚举的东西放入状态.当不确定性太多的时候,我们就需要将它们压进较少的维数内. 常见的状态: 天生二进制(开关.选与不选.是否出现--) 爆搜出状态,给它们编号 1. 状态跟某一个信息集合内的每一条都有关.(如 dp 套 dp) 2. 若干条精简而相互独立的信息压在一起处理. (如每个数字是否出现) 在使用状压 dp 的题目当中,往往能一眼看到一些小数据范围的量,切人点明确.而有些题,这样的量并不明显,需要更深人地分析题目性质才能找到. 二.预备知识…
一.定义 k-SAT(Satisfiability)问题的形式如下: 有 \(n\) 个 01 变量 \(x_1,x_2,\cdots,x_n\),另有 \(m\) 个变量取值需要满足的限制. 每个限制是一个 \(k\) 元组 \((x_{p_1},x_{p_2},\cdots,x_{p_k})\),满足 \(x_{p_1}\oplus x_{p_2}\oplus\cdots\oplus x_{p_k}=a\).其中 \(a\) 为 \(0\) 或 \(1\),\(\oplus\) 是某种二元…
一.前置概念 接下来的这些定义摘自 置换群 - OI Wiki. 1. 群 若集合 \(s\neq \varnothing\) 和 \(S\) 上的运算 \(\cdot\) 构成的代数结构 \((S,\cdot)\) 满足一下性质: 封闭性:\(\forall a,b\in S,a\cdot b\in S\). 结合律:\(\forall a,b,c\in S,(a\cdot b)\cdot c=a\cdot (b\cdot c)\). 单位元:\(\exists e\in S,\forall…
一.引入 随机数据中,BST 一次操作的期望复杂度为 \(\mathcal{O}(\log n)\). 然而,BST 很容易退化,例如在 BST 中一次插入一个有序序列,将会得到一条链,平均每次操作的复杂度为 \(\mathcal{O}(n)\).我们称这种左右子树大小相差很大的 BST 是"不平衡"的. 有很多方法可以维持 BST 的平衡,从而产生了各种平衡树. Treap 就是常见平衡树中的一种. 二.简介 满足 BST 性质且中序遍历为相同序列的二叉查找树是不唯一的.这些二叉查找…
右转→https://www.cnblogs.com/mytqwqq/p/15057231.html 下面放个板子 (禁止莱莱白嫖板子) P3369 [模板]普通平衡树 #include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n,op,x; struct Treap{ int rt,tot,lc[N],rc[N],val[N],sz[N],rnd[N]; void upd(int x){ sz[x]=sz[lc[x…
戳 这里(加了密码).虽然写的可能还算清楚,但还是不公开了吧 QwQ. 真的想看的 私信可能会考虑给密码 qwq.就放个板子: //LOJ 6053 简单的函数 f(p^c)=p xor c #include<bits/stdc++.h> #define int long long using namespace std; const int N=1e6+5,mod=1e9+7; int n,s,tot,val[N],id1[N],id2[N],x,cnt,p[N],sum[N],g[N],h…