Codeforces Round 888 (Div. 3)

💡 原文中文,约8000字,阅读约需19分钟。
📝

内容提要

给定一个楼梯,每个台阶的高度为h,和t个人,任务是确定哪些人可以通过使用台阶达到高度H。解决方案涉及检查人的身高与H之间的差是否是k的倍数,并且倍数是否小于m。如果是,则该人可以达到所需的高度。

🎯

关键要点

  • 给定一个楼梯,每个台阶的高度为h,和t个人,任务是确定哪些人可以通过使用台阶达到高度H。
  • 解决方案涉及检查人的身高与H之间的差是否是k的倍数,并且倍数是否小于m。
  • 如果是,则该人可以达到所需的高度。
  • 有一个数组,允许无限次交换两个位置,要求是交换的那两个数字奇偶性必须一致,问最终是否能有序。
  • 只需要排序后的每个位置的奇偶性保持即可。
  • 问能否在一个数列中找到一个子序列,满足长度恰好是k的倍数。
  • 将序列每k个一段,分成x段,每一段内的数字相同,且第一个和最后一个必须在序列中。
  • 如果开头和结尾的数字相同,能找到k个和首尾相同的数字。
  • 如果不同,需要分别找到k个和首相同的数字和k个和尾相同的数字。
  • 给你一个丢了一个数字的前缀和,问是否存在可能的原始串。
  • 前缀和相减就是原始数字,找出重复的和没有出现的,算一算加起来是否相同。
  • 有n种药品,部分药品可以通过其他药品合成得到,问得到每一种药品需要多少钱。
  • 这是一个DAG图,拓扑一下,然后不断计算更小的值,替换掉原来的价格。
  • 给定一个k,找到一个值x,计算(a ⊕ x) & (b ⊕ x)的最大值。
  • 根据公式,若a和b在二进制上重合度越大,则结果越大。
  • 需要先满足高位相同,可以使用01字典树来实现。
  • 有n座山,山之间有桥,询问能否从a山到b山,在能够消耗最大e的代价情况下。
  • 需要找到一条路径,满足最大值小于等于h_a + e,使用并查集来处理可达性。
➡️

继续阅读