省流
C 题狂卡一小时,选择跳题开出 ABDE,赛后被小朋友薄纱。
11.2
内含剧透,请vp后再来。
不是题解!!!!!!!
赛时
A 题不谈。
B 题给了一个 \(10 \times 10\) 的 \(01\) 矩阵,要求把每个 \(m \times m\) 的矩阵取出来,问不同的有多少个。可以把每个矩形内部按从上到下从左到右拼接成字符串,丢到 set 里就可以了。
C 题给了一个长度为 \(n \leq 3e5\) 的仅包含 \(a\) 和 \(b\) 的字符串,问有多少个子串满足 \(a\) 的数量大于等于 \(x\) 且 \(b\) 的数量小于 \(y\)。很容易想到双指针,但是相当难以实现,于是考虑二分。我二分的方向是固定右端点,然后二分找到最左侧满足的和最右侧满足的左端点,然后答案取中间。但这样的话因为只有中间一段是满足的,并不满足二分的条件,于是再去实现双指针,到了六十多分钟时仍未写出选择跳题。
D 题给了 \(n \leq 5e5\) 个数,按顺序加入,每个数的贡献是距离他最近的数的距离。利用 set 模拟即可,注意前后的数是否存在,以及前后的数前后是否有数。
E 题给了两个长度相同的 \(01\) 字符串,问第一个串能不能通过左移任意次达到与第二个串相同。我直接用滚动哈希 \(O(n)\) 解决了,不知道正解是什么。通过后没有剩余的时间了,比赛结束。
赛后
比赛一结束我就问他们的想法,然后有小朋友说 C 二分,我一开始还说 C 二分是假的,结果一说就知道了。对于一个固定的右端点,分别二分满足 \(a\) 和满足 \(b\) 的左端点然后取交集即可。注意初始化不能简单的初始化为 \(0\)。
2025年11月2日