题目大意:
初始时有一棵4个节点的三叉树
每次操作在一个叶子节点下面加入两个节点
问每次操作完树的直径
设当前树的直径为S-T
每次加入节点后,树的直径至多只会改变一个端点,另一个节点仍是S 或T
证明如下
- 考虑加入节点x 的父节点$x_{fa}$,在x 未加入时,根据直径的求法,离$x_{fa}$最远的点一定是S 或T
- 再加入x 后,易得离$x_{fa}$最远的点还是S 或T,因此离x 最远的点也是S 或T
因此每次求一遍x 到S,T 的距离,若大于S-T 就更新
代码就不放了
题目大意:
初始时有一棵4个节点的三叉树
每次操作在一个叶子节点下面加入两个节点
问每次操作完树的直径
设当前树的直径为S-T
每次加入节点后,树的直径至多只会改变一个端点,另一个节点仍是S 或T
证明如下
因此每次求一遍x 到S,T 的距离,若大于S-T 就更新
代码就不放了
题目大意:
给出一棵黑白两色的树
每次操作可以改变一个同色联通块的颜色
问最少需要几次操作
首先缩个点,显然每次操作改变整个同色联通块更优
然后求直径,答案为
因为在缩直径时,其它枝叶也会缩掉,这个感性理解即可
若某些门之间成环,则破开环中任意一扇门可以打开环中所有门
于是问题等价于n 扇门形成1-k 个环有几种方案,再除总方案数
总方案显然是
第一类斯特林数参考组合数学入门
题目还限制一号门不能单独成环,需减去一号单独成环的方案数
因此方案数为
代码就不放了
首先将排名相同的选手放入同一个集合
这样的集合个数可以为
集合之间相对顺序并不清楚,因此是一个全排列
第二类斯特林数参考组合数学入门
设为个元素放入个非空集合的方案数
不难得出总方案数为
代码就不放了
题目大意:
给出一棵n 个节点的树,每条边有一个权值
若v 在u 的子树内,且,则称u 能控制v
问每个点能控制多少点
因为v 在u 的子树内,所以
化简得
观察到为定值,且单调递增
找到第一个点u,满足,则路径上所有点均可控制点
由于只有一次询问,可用树上差分
至于怎么找第一个满足的点u,可以用二分或倍增
感觉倍增实现起来会简单一点,代码用的是二分
问题大意:
给出一棵n 个节点的树,每条边距离为1
其中有m 个节点受到了(来自东方的)神秘力量的影响
如果点x 有神秘力量来源,则距离x 小于等于d 的点均会被影响
神秘力量来源只有一个,问有几个点可能有神秘力量来源
一个节点可能有神秘力量来源,当且仅当它与所有受影响点距离均小于等于d
首先考虑求子树内的最大距离
设为点x 到子树中节点的最远距离,不难得出
要保证中有被神秘力量影响的节点
设为x 到非子树中节点的最远距离
对于非子树中的节点,有两种可能
对于来自兄弟节点的转移,暴力枚举会超时
考虑用记录x 子节点中距离最大值
仅在遍历所有兄弟节点
刚学OI 两个月上考场碰到这题表示一脸懵逼
每条路径分成两条链,一条,一条
首先考虑
不难得出,当会被观察到
观察到为定值,用桶统计即可
在点,
在,
然后是
同理可得,当会被观察到
其中为的结束时间
化简得,仍然用桶统计
需要注意的是可能会有负值
还有,当时,会重复计算,记得减掉