Solution Set -「LOCAL」冲刺省选 Round X
时间利用效率?
同学,你的效率呢?
我真不知道中途几个小时干了啥,我也不知道我实在划水、神游还是真的在自闭想题。
虽然真实考场肾上腺素不会允许我这么做,但模拟赛还是得提起精神啊。
哦,我不是生竞的,上面那句话当成伪科学。
下落的数字
给定以 为根的带点权树,定义 travel 为:从根出发,每次走到孩子点权集合中取到 lower_bound 的点,若不存在则停下,设最后到达结点 。现进行 次操作:
- 修改单点点权;
- 给定 ,求当前树上 travel 的终止点。
。
树剖。线段树维护穿过一整段重链时,travel 值的取值区间。询问时模拟跳重链。复杂度 。
序排速快
给出一个排序方法:
其中,称 为 partition point,当且仅当 。对于 ,求所有 阶排列在该方法排序完成后的 值之和。
。
缺的不是所谓结论,而是好看的结论。不要抓着“等价转化”不放,因而舍弃一条捷径。
显然应该对 的每个位置分别求被冒泡了多少次。考虑 经历一次冒泡时:
- 若 ,则这样的 减少一个;
- 否则若 ,则这样的 减少一个;
- 否则, 是 partition point,不会被冒泡。
结论比起我想到的要冗长,但是它“好看”——它是单纯的计数,没有取 之类的数值讨论。
接下来,讨论计数。对于第一类贡献,发现就是逆序对个数。令 表示所有 阶排列的逆序对数量,那么
对于第二类贡献,注意到贡献中对 的大小要求比较复杂,而根据排列具有的多样“子问题”处理方式,我们可以枚举 所在的位置 ,统计满足条件的 的数量。注意 实际上没有参与数量贡献,而对于一个 ,显然已有 ,若 有贡献,则 。这一步用一个小 trick:概率问题与计数问题可以相互转化来简化讨论。我们求 的概率,显然这些下标的具体值都不影响概率,问题就是——排列里有 个数,求第一个数不是最大值的概率,显然嘛,。因而,设 表示所有 阶排列的第二类贡献和,那么
后面那一坨随便整理一下就能递推求了。复杂度 。
树
给定含 个点 条边的点双连通图及其两棵生成树 ,每次操作取 的一片叶子,去掉它与父亲在 内的连边,并指定其新父亲。构造把 变成 的操作方案。
。
被卡了一个点 qwq,简单胡一下。
搜索,但是有条理。我们为两棵树指定同一个根,然后自上而下递归地构造出每条正确树边。需要做到一个清空 内某结点子树的操作,暴力递归进去,把每个点丢到子树外即可。讲错了不负责。(
我本来浅写了一下,没有精细的限制,大概 分,然后加上一个“每次遍历邻接点,按一个随机排列的顺序遍历”,就只剩最后一个 subtask 的最后一个点过不了。事实证明乱搞的时候应当随机起来。(
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现