ABC 311 A - E

发布时间 2023-07-23 06:23:44作者: __Tzf

ABC 311 A - E

A

题意:求一个字符串的第一个 ABC 最早出现的位置,可以打乱顺序,可以间隔

建立三个变量,然后以此判断即可,直到三种字符都出现就可以了

B

题意:给定每个人的行程表,有空和没空,求最多的连续的每个人都有空的天数

很简单,先 $ O(n^2) $ 求出每天是否每个人都有空

然后就是一个简单的遍历,如果发现这一天不是每个人都有空,就停止累加,统计答案,否则答案累加

C

题意:给定一张 $ n $ 点 $ n $ 边的有向图,找最长的环

就是一个简单的 DFS,从每个点开始遍历,记录一下答案就可以了

D

题意:在一张地图上,有障碍和非障碍,在非障碍上滑行直到碰到障碍,求所有可以到达的点,滑行途中也算,但不能在滑行途中改变方向

写一个 DFS,像四周搜索,注意记录方向就可以了

用一个二维数组记录答案,最后答案累加

E

题意:一个网格,每个方形可以穿孔,然后求所有不穿孔的正方形

是一个非常经典的 dp,可以考虑设 $ dp_{i, j} $,表示以 $ (i, j) $ 为右下角的无孔正方形数量

转移是 $ dp_{i, j} = \min{dp_{i - 1, j}, dp_{i, j - 1}, dp_{i - 1, j - 1}} $

很好理解,像正方形的三个方向取答案,然后取最小值,满足都是无孔的要求,简单来说,就是三个转移方向中,最小的一个一定被另外两个包含,也就是需要的正确答案

最后建立答案,把所有 $ dp_{i, j} $ 加起来