专栏文章

题解:CF2155C The Ancient Wizards' Capes

CF2155C题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minm4tvd
此快照首次捕获于
2025/12/02 04:39
3 个月前
此快照最后确认于
2025/12/02 04:39
3 个月前
查看原文
此题解由 codeforces 官方题解翻译而来。

关键性质

假设哈利的列表至少对应一种斗篷安排。主要结论是:列表中任意两个连续值的差最多为 1

分析

当哈利从位置 ii 走到位置 i+1i + 1 时,巫师 11i1i - 1 以及 i+2i + 2nn 的可见性不受影响。对于巫师 iii+1i + 1,存在四种可能情况:
情况巫师 ii巫师 i+1i+1ai+1aia_{i + 1} - a_i说明
1左侧左侧+1+1巫师 i+1i+1 变得可见,巫师 ii 仍然可见
2右侧右侧1-1巫师 i+1i+1 保持可见,巫师 ii 变得不可见
3左侧右侧00两个巫师都保持可见
4右侧左侧00巫师 i+1i+1 变得可见,巫师 ii 变得不可见

结论

  • 如果两个巫师以相同方式披斗篷,则列表中相应条目之间的差为 ±\pm 1。
  • 如果两个巫师以不同方式披斗篷,则差为 0
这决定了整个斗篷安排的一种唯一可能性(可能无效),该可能性仅基于巫师 11 披斗篷的方式,前提是对于所有 1i<n1 \leq i < n,满足 ai+1ai<2|a_{i+1} - a_i| < 2
因此,巫师斗篷的安排最多有两种可能。我们可以构建这两种安排,并检查它们是否与哈利的列表一致。

算法步骤

  1. 检查相邻 aia_i 的差值是否都 1\leq 1,如果不是直接输出 0。
  2. 构建两种可能的斗篷安排:
    • 方案1:巫师 1 披在左侧。
    • 方案2:巫师 1 披在右侧。
  3. 根据差值规则填充后续巫师的斗篷方向。
  4. 验证每种方案是否与完整列表一致。
  5. 输出有效方案的数量。

时间复杂度

O(n)O(n) 只需要扫两遍数组即可。
注:本文由 deepseek 直接翻译,作者修改格式并检查错误。

评论

0 条评论,欢迎与作者交流。

正在加载评论...