ABC 311 A - E
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} $ 加起来