CF1821
CF1821
A. Matching
Statement
你将获得一个最多包含
Solution
考虑如果只能为
否则当 ?
为第一位时,答案
B. Sort the Subarray
Statement
有一个序列 louis
排序了其中一段子序列 louis
排序的那一段子序列的左右端点
Solution
首先找到第一个不同和最后一个不同的
C. Tear It Apart
Statement
现有一个由小写字母组成的字符串,你将对这个字符串进行操作。每次操作你可以选择任意多个(可以只选一个)两两在字符串中不相邻的字母,把它们从字符串中删除。求至少进行多少次操作,字符串里的所有字母相同。
Solution
考虑枚举所有字母然后分段。
次数就是
D. Black Cells
Statement
在一条数轴上有无穷个点,下标为
你控制着一个机器人,初始时机器人位于坐标为
机器人有两种状态:激活状态 和 非激活状态。
当处于激活状态时,机器人所在的点都会被染成黑色。
处于非激活状态时,机器人所在的点不会被染成黑色。
初始时机器人处于非激活状态。
你可以对这个机器人进行若干次操作,操作分为三种类型。每一次操作,你可以选择如下三种操作之一执行:
- 将机器人的位置像数轴的正方向移动一个单位(即:若当前机器人在坐标
,则执行一次该操作后机器人将移动到坐标 的那个点); - 激活机器人:该操作只有当机器人处于非激活状态时才能执行,执行该操作后机器人将变为 激活状态;
- 撤销激活机器人:该操作只有当机器人处于激活状态时才能执行,执行该操作后机器人将变为 非激活状态。
有
你需要使用最少的操作次数,将至少
同时,本题也要求操作结束时机器人恢复到非激活状态(这也就意味着最少操作次数对应的最后一次操作是 撤销激活机器人)。
问:至少需要进行几次操作能够使至少
Solution
首先选取长度大于等于 2
的区间肯定不劣。考虑最后答案的组成会是什么样子的,要么全部选取一些长度大于等于 2
的区间,最后没选完就够了。要么选取一些长度大于等于 2
的区间再拼一些长度为 1
的区间。
显然如果是第一种的话答案唯一。第二种可能之后加上一些长度大于等于 2
的区间拼成答案。
E. Rearrange Brackets
Statement
- 本题一个测试点内有多组测试数据。
- 对于一个匹配的括号串,定义它的权值为进行以下操作多次将它清空的最小总代价:
- 选取两个相邻的左右括号删除,并将代价加上原右括号右边的括号数量。
- 你可以进行 不超过
次 以下操作,将给定的匹配括号串 变为另一个匹配括号串:- 选取 一个 括号,将它移动到串的任意位置。
- 求最终括号串的权值最小值。
, 。
Solution
先考虑没有
显然尽可能从右往左删掉匹配括号是比较合理的。
然后我们考虑设
再考虑对于有
显然会减少中间括号对数个。我们维护他俩之间的距离然后排序选出前
直接排序复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】