[CodeForces] CF404 题解
注:难度评级为 D 到 A,对标 NOIP T1 到 T4。+ 表示比原本难,- 反之。例如,D+ 比 D 难。难度评级仅供参考。 如果认为难度评级与实际难度不符,可以在评论区@我进行讨论。
本篇题解无复杂的公式推导,题目较清新自然,请放心食用。
斜体字为说明提示。通常与多倍经验有关。
A. Valera and X
【难度分析】
思维难度:D-
实现难度:D-
总体难度:D-
评级: 普及-
【题目大意】
判断一个
- 矩阵两条对角线上的字符都相同。
- 除了两条对角线以外的地方,字符都相同。
- 矩阵不能只由一种字符组成。
合法输出 YES
,否则输出 NO
。
。
【解题思路】
注意到
B. Marathon
题面看不懂,咕了
C. Restore Graph
【难度分析】
思维难度:C
实现难度:D
总体难度:C-
评级: 普及+/提高
【题目大意】
给定
不存在输出 -1
。
, ,输出的总边数应该不超过 条。
【解题思路】
考虑到构造图较难,我们可以构造树。
根节点可以选
知道深度了,我们只需要上一层的向下一层的连边即可。容易证明这样构造是对的。
不合法情况:
- 不存在
为 的点。 的点不止一个。- 根节点度数
。 - 某个节点度数
。即设第 层( )点数为 ,第 层点数为 ,有 。
D. Minesweeper 1D
【难度分析】
思维难度:C
实现难度:D-
总体难度:D+
评级: 普及+/提高
【题目大意】
一维扫雷。
给定一个字符串 0
、1
、2
、*
、?
组成,它们表示:
0
:它的左边和右边都没有雷。1
:它的左边和右边有一边有雷。2
:它的左边和右边都有雷。*
:它是雷。?
:它未知。
将 ?
替换为其他的任意一个,求总方案数,对
【解题思路】
考虑 DP。
设
表示位置 、 、 均无雷。 表示位置 无雷, 、 有雷。 表示位置 有雷, 、 无雷。 表示位置 有雷, 、 无雷。 表示位置 有雷, 、 任意。
有状态转移方程:
若
0
, 。1
, 。 。
2
, 。*
, 。?
, 。 。 。 。 。
初始值
D. Maze 1D
【难度分析】
思维难度:B-
实现难度:D
总体难度:C+
评级: 提高+/省选-
【题目大意】
一个机器人在数轴上的
为了使机器人最后一步走到一个从来没来过的位置,我们可以在数轴上放石头。每次机器人被石头卡住他就跳过当前的那个指令。
问:最少使用石头的前提下,一共有几种放石头方法。
指令只包含 L
和 R
。前者表示往左走,后者表示往右走。
。
【解题思路】
结论题。
结论一:要么不用放石头,要么只放一块石头。并且放的石头一定碰到过。
证明:
为了保证使用的石头最少,显然,如果可以不放石头,那么就一定不放。
如果必须要放石头,必须经过它们,否则可以撤去一块。
如果不是一块,考虑放两块石头的情况:
- 它们在原点同侧,那么必须经过它们之间的所有点,并且最后停留在它们之间,显然最后停留的不是一个从来没来过的位置,不成立。
- 它们在原点同侧,那么碰到一块就不会往它后面走,那么它后面的石头也就没有用了,可以撤去。
多块石头同理。
证毕。
结论二:如果最后一步向左走,石头在原点右侧;否则石头在原点左侧。
证明:
如果不然,即石头在原点左侧,且最后一步往左走。由于必须碰到石头,所以走过的区间左端点为石头,右端点为这个点,可是最后一次往左走,那么一定会走到这个区间里。反之同理。
证毕。
结论三:石头可放的区间为以原点为一个端点的连续区间。
证明:
如果可以放石头,那么一定有一个最远的可以放石头的点,记为
考虑石头的作用:拦截操作。如果石头在右边,那么拦截的是 R
操作,否则反之。
考虑所以比
证毕。
这样,我们的答案具有单调性,二分最远点,check 暴力模拟即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!