乱七芭蕉
#1 DFS 序 的性质
DFS
序标号的树,按序号沿简单路径遍历一遍,恰经过每条边两次后回到根节点- 对于
DFS
序有以下 充要条件 :- 对于其中相邻的两个节点序号
与 ,只可能有: 是 的父亲 的祖先是 的父亲
- 对于其中相邻的两个节点序号
#2 语法要点
- C++ 中,构造函数可以被用来进行类型的隐式转换,当调用函数时传入的参数类型与函数参数的类型不匹配时,编译器会尝试使用构造函数将实际参数转换为目标类型。
#3 gcd 的差分性质
#4 数学常识
#5 前缀和相关的 Tips
- 对于连续的一段区间,若对前缀和有线性的要求,考虑直接加在区间最左侧与分次加上去是等价的
应用例:
牛妹正在玩多米诺骨牌。她将几张多米诺骨牌从左到右排成一排,每一张多米诺骨牌都有重量,第 i 张多米诺骨牌的重量记为
- 手动选择第
张多米诺骨牌,将其向右推倒; - 对于第
张多米诺骨牌,若满足 ,则其也会向右倒下; - 对于第
张多米诺骨牌,若满足 ,则其也会向右倒下; - 对于第
张多米诺骨牌,若其左侧的第 张多米诺骨牌倒下,且第 张多米诺骨牌的重量不大于其左侧倒下的全部多米诺骨牌的重量之和,则其也向右倒下 - 对于第
张多米诺骨牌,如果其倒下了,那么这一局游戏就是完美的。
有
思路:
首先明确对于一个一次性在最左侧加上这些次之和绝不会劣于区间分多次 “加”
然后定义
- 前缀和数组
- 只考虑
的代价数组(需要在第一个上加多少)
然后对于区间
然后看看这个区间里最大的
所以答案就是
#6 曲棍球棒恒等式
曲棍球棒恒等式指出,对于非负整数
证明:考虑从
另一方面,从