611 日 , 2024 21:19:56
Codeforces Round 951 (Div. 2)

1 Guess the Maximum

题目描述:

给定一个数组 $A$ ,找到一个数 $x$ ,使得数组 $A$ 中所有长度大于 $2$ 的子数组 $A’$ 的最大值严格大于 $x$,求 $x$ 可取的最大值。

数据约束:

$2 \le n \le 5 \times 10^5$ ,$1 \le a_i \le 10^9$

解题思路:

找到所有长度等于 $2$ 的子数组的最大值的最小值 $m$ ,则 $x = m – 1$。

复杂度:时间复杂度 $O(n)$ ,空间复杂度 $O(n)$

2 XOR Sequences

题目描述:

给定两个数 $x, y$ ,现有两个无限长度的数组 $A, B$​ 。两个数组的构造方式如下:

image-20240611175101437

求这两个数组的公共最长字串的最大长度。

数据约束:

$1 \le x, y \le 10^9$

解题思路:

异或就是相同为 $0$ ,不同为 $1$ 。那么最长公共字串的长度就是 $x, y$ 相同最低为的长度所能表示的二进制数的最大值。

复杂度:时间复杂度 $O(\log x)$ ,空间复杂度 $O(1)$

3 Earning on Bets

题目描述:

给定一个数组 $K$ ,长度为 $n$ 。要求构造一个数组 $A$ ,长度同样为 $n$ 。我们定义 $S = \sum_{i=1}^{n} a_i$ ,现要求 $\forall i \in[1, n]$ ,都有 $a_i \times k_i > S$ 。请构造这样的一个数组 $A$ 。

数据约束:

$1 \le n \le 50$ ,$2 \le k \le 20$

解题思路:

我们假设一个数 $x$, 每个数 $a_i = \frac{x}{ki}$ ,那么我们只需要满足 $\sum{i = 1}^{n} \frac{x}{k_i} < x$ 即可,如果不能满足该不等式,就不存在这么一个数组 $A$ 。对于这个数 $x$ ,我们可以选择数组 $K$ 的最小公倍数。

复杂度:时间复杂度 $O(n)$,空间复杂度 $O(n)$

4 Fixing a Binary String

题目描述:

给定两个数 $n, k$ ,并提供一个字符串 $S$ ,这个字符串仅有 $0, 1$ 组成,且长度为 $n$ 。现需要对数组进行一下操作:

  • 选定一个数 $p$ ,将 $[1, p]$ 范围的字符串进行翻转(假设字符串的起始下标为 $1$ ),得到新的字符串 $S’$ 。
  • 将 $S’$ 循环左移 $p$ 位,得到新的字符串 $S”$ 。

如果得到的字符串 $S”$ 满足以下条件:

  • $s_1 = s_2 = \cdots = s_k$
  • 对于 $\forall i \in [1, n – k]$ ,都有 $si \neq s{i + k}$

我们称这个字符串是符合要求的。

求满足要求的 $p$ 值。(有可能有多个值,只需要输出一种即可)

数据约束:

$1 \le k \le n$ ,$2 \le n \le 2 \times 10^5$

解题思路:

可以推导发现,最终生成的字符串的形式是以连续 $k$ 个的 $0, 1$ 交替出现的序列,最后一组不一定要满足 $k$ 个。

我们维护两个数组:$dp_l[0/1][i]$ 表示以 $i$ 位置结尾的以 $0, 1$ 结尾左侧满足上述条件的连续 $k$ 个的组数;$dp_r[0/1][i]$ 表示以 $i$ 位置结尾右侧以 $0, 1$ 结尾左侧满足上述条件的连续 $k$​ 个的组数。

遍历每一个位置 $p$ ,在右侧可以找到一个符合规定的最大长度,有可能会剩余一个不满足条件的子串,且这个子串长度必然小于 $k$ ,大于等于 $k$ 就不满足要求。既然长度不够,我们可以从 $p$ 的左侧借用一点子串来填充剩余部分。借用部分必须和剩余部分相同。

借用之后,我们在借用的左侧,寻找到最长符合要求的子串,此时也可能会剩余一个子串,且这个子串长度必然小于 $k$ ,大于等于 $k$ 就不满足要求。左侧剩余部分必须相同,且和符合部分进行有效衔接。

需要提升效率的地方就是查询这些符合规定的最大长度,此时就可以使用前面提到的 $dp$ 数组。又因为需要翻转,所以左侧是维护一个向左查询的数组,右侧是维护一个向右查询的数组,这就是为什么要两个 $dp$ 数组的原因。

Screenshot_2024-06-11-20-20-05-341_com.orion.note

这个题目的细节非常的多,这里我主要是少考虑了这两种情况,右侧符合规定的最大长度为 $0$ ,以及 $k = n$ 的情况。

复杂度:时间复杂度 $O(n)$,空间复杂度 $O(n)$

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!