T1:
游戏有 个关卡,编号,编号 的关卡的难度是 ,其中 是 的一个排列。每一个关卡还定义了一个重要度 ,它的值等于其中前 个关卡中的难度最小值,即 。
玩家需通关每个关卡各一次,但不按编号顺序,而是根据重要度。玩家每一次会选择还没有打过的关卡中重要度最低的那一个,如果最低的有多个则选择其中编号最小的那一个。
现在玩家只记得第 个通关的关卡的编号是 ,其他信息则不记得了。请找到一组可能的难度 ,这样的排列若有多种可能,则找到字典序最小的那一个。
容易发现 必然是若干个递增序列拼起来,而且递增序列是递减的。从后到前枚举每一段递增序列,开头必须是小的,然后尽量大即可。
T2:
你有一个数组,每次可以选择一个下标,然后将变成或者。
注意这里我们认为数组首尾是相邻的,也就是认为表示, 表示。
问对于每个,需要至少进行多少次操作,能将数组里面所有数字变成?如果多少次都不能则输出。注意对每个,问题是独立的。
对于固定的 ,如果把 标记为 , 标记为 , 标记为 ,发现:答案为 的个数加上 "每一个 交替段长度除以二取整" 的和。
线段树维护每个 交替段的开头即可。
T3:
这数据范围一眼区间 DP。先有个粗略想法: 表示 内, 中间其他 的方案数。
如果 且 ,这个状态不可行。否则先 把 和 的数分配好,然后考虑左右内部的方案数。因左右对称只考虑左边,枚举 为 内最高的位置,取 累加即可(当然要求 的半径刚好到 或 )。
但是这样是 的。用前缀和可以优化到 获得 pts。
进一步的优化,发现直接记录 表示 内填, 默认最高的方案数。转移时枚举 中间半径顶到 的位置 ,然后 再乘以组合数即可。而枚举 中间半径顶到 的位置 ,因为每个位置最多被枚举 次,这一部分总共 。
如何枚举?如果暴力记录 保存所有顶到 的位置爆空间。可以在枚举了区间长度 的中途,现场计算两个数组: 表示左边顶到 且右端点 的位置们, 类似定义。
T4:
对一棵给定的 个结点的无根树 ,令 为把第 个结点作为根后得到的有根树。
之后通过 次操作构造了 棵有根树 ,流程如下:
-
初始,使。
-
对于第 次操作,通过如下方式从 构造得到:
- 先选择一个原始结点 (),并新建一棵和 一样的有根树 。每次的将会是给定的。
- 把 复制 次。对其中第 次的复制,将其根结点作为子结点,与 中的第 个结点连边。
- 完成连接后,得到新图即为。注意这是一个有根树, 的结点个数为 。
简而言之,在的每个结点下挂一个就是。
请对 ,求出他们的最大独立集的大小。图的独立集是图的点集的子集,满足任意两个点在图中没有直接连边。
神奇的结论题。
首先树的不带权独立集是可以贪心的。 自底向上即可。
那么我们求 ,只需要关心三个东西:原树的独立集大小、 的独立集大小、 的根在贪心情况下会不会选。
对于 中 会不会选,可以换根 DP,求出 表示以 为根贪心, 的儿子有多少个选了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!