[CodeForces] CF847 题解
A. Union of Doubly Linked Lists
【题目大意】
给你若干个双向链表,让你把它们连成一条。
【解题思路】
每次把一条链表的头连向另一条的尾,用一个变量维护一下链表的尾,直接做就做完了。
B. Preparing for Merge Sort
【题目大意】
给定一个元素互不相同序列
【解题思路】
我们维护每次取出来的子序列的末尾值
显然,这个值是单调递减的。因为如果有
所以,对于数
-
若
,如果 比最小的末尾值还小了,这意味着,没有子序列可以在 加入后保持单调递增。这时,我们给 新开一个子序列。 -
否则,
可以加到子序列里。为了维护单调性,我们需要找到一个位置,使得 加入后, 依然单调递减。形式化地,我们需要找到一个位置 ,使得 且 ,然后将 插入到第 条子序列的后面,并更新 数组。注意到 具有单调性,二分查找即可。
统计答案使用一个 vector。直接做就做完了。
C. Sum of Nestings
【题目大意】
称一个字符串为括号序列,当且仅当它仅由 (
或 )
构成。
称一个括号序列是合法的,有
- 空串是一个合法括号序列
- 如果
是合法括号序列,那么 也是。 - 如果
和 都是合法括号序列,那么 也是。
以上定义与你熟知的定义相同。
在一个合法的括号序列中,称一对括号有
称一个合法的括号序列 有
例如,合法的括号序列 ()(())
有 (((())))
有
现在,你需要构造一个合法的括号序列,使得它一共有
【解题思路】
注意到每次对于一个有
这样我们就有一种构造方案:
欲构造有
- 若
。记有 对括号, 对括号嵌套的合法括号序列为 。则有 。 - 否则,记有
对括号, 对括号嵌套的合法括号序列为 。则 。
构造的可行性显然。
这样,我们成功地将构造
D. Dog Show
【题目大意】
【解题思路】
神仙贪心。
注意到这题有一个很好的性质:所有狗粮的价值都一样。
首先,对于第
但是,我们最多有
那么为什么要计算停留时间呢?对于一个狗粮,如果要停留,显然不管在哪里停留都一样(当然不能是在该狗粮后面),于是我们只在意停留时间。
好,我们这里先说做法,等会再解释。
具体地,我们对于第
注意到我们在枚举
好,那么现在有人会问:我现在把所有大于
这个事情是这样的。我们总共的停留时间不是求和,而是求最大值。因为我们在前面的狗粮停留时,间接地,我们也等待了后面的狗粮。因为对于每个狗粮,时间流逝是一样的。其实这就是一个木桶原理(仔细读读题目,如果想看详细的去看 luogu 的)。
好了,这样真的直接做就做完了。这道题是道蓝题,代码只有 19 行。
E. Packmen
咕
F. Berland Elections
咕
G. University Classes
【题目大意】
给定
【解题思路】
暴力统计即可,直接做就做完了。
H. Load Testing
【题目大意】
给一个数组
【解题思路】
考虑维护两个数组
考虑计算这两个数组。对于前
同理,
考虑枚举最高点
形式化的:
记
记
对于最高点
注意需要特判整个序列严格单增或者严格单减的情况,有答案为
即
这样就做完了。
I. Noise Level
咕
J. Students Initiation
咕
K. Travel Cards
咕
L. Berland SU Computer Network
咕
M. Weather Tomorrow
【题目大意】
给定一个
【解题思路】
注意到对于等差数列
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!