A
题意:你在数轴原点。有一个宝箱在 ,钥匙在 。每移动一单位,耗费 时间。你可以到了 然后抱着宝箱走,但是抱着宝箱走的总路程不能超过 单位。如果某时刻你、钥匙、宝箱在同一个单位上,就能开宝箱。问:最快要多久开宝箱?
要么是拿钥匙,向宝箱走;要么是去抱着宝箱,向钥匙走 单位,或者直接走到钥匙那里。两种情况取 即可。
B
给定一个长 的数组,将其分为 个 pair 表示 个点。定义 为第 个点与第 个点的曼哈顿距离,请最小化 。
显然,如果两个点之间插入一个两个坐标都在它们之间的点,答案不会变。
所以数组排序,让 作为第一个点, 作为最后一个点,答案就是它俩的曼哈顿距离。
C
题意:给出 个字符串(),每个字符都是数字。问有多少对字符串拼起来之后,前半部分的数字和等于后半部分?(若拼起来不是偶数长度,忽略)
关注:给出的长度 ,直接枚举哪两种长度的字符串拼在一起,用个 记录就行了。
D
题意:给出一个长 的数组 ,。要求能否构造一个数组 满足 ,且 。
令 ,则 。将 插入 01-Trie 中。
枚举 ,查询此时 与哪个 异或最大,看这个最大值是否超过 :如果没超过, 就决定好了,可以输出。
E
小 A 和小 B 在打牌,各有 张牌。每张牌有自己的攻击力和防御。小 A 先手。
一张牌 能打败另一张牌 ,当且仅当 。
每当对手打出一张牌,此时的人就必须打出一张能打败它的牌;否则此时的人就输了。当一张牌被打败,它会回到主人手中。
问当两人绝顶聪明,最终的结果是谁赢或者平局。
首先一个局面可以用正打出来的那张牌来代表。把一个局面抽象成一个结点,构建一张有向图。这已经是一个解法,但是是 的。因为边数是 的。
尝试优化边数。发现每次打出去的牌,一定是能击败对面的,防御值最高的牌。将两人的牌按攻击排序,求后缀防御最大值,再套一个二分,就可以求出每个人会使用哪张牌来击败对面的哪张牌。
此时的边数就被优化到 级别了,一次 dfs 搞定。
复杂度 。(排序、二分的复杂度)
F
定义一个长度为 的非负整数序列是 Fancy 的,当且仅当:
-
,。
-
,。
多测,给定 ,求有多少 Fancy 序列,答案对 取模。
,。
直接求两个条件,很难;所以我们改为求满足第二个条件,但是违反第一个条件的个数。
由于第二个条件,所以 要么全部属于 ,要么属于 ,其中 代表上界,可以视为 。
令 为违反第一个条件、满足第二个条件、所有元素都在 内的 的数量。则我们要求的就是 。
由条件二的做差,考虑将 转用差分数组表示。记差分数组为 。
记 :固定了差分数组为 后,有多少个 使得 中每个元素都在 之间。
则 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!