复盘|第108场双周赛
来源:哔哩哔哩
2023-07-10 21:59:35
(资料图片仅供参考)
最长交替子序列
【分组循环】外层循环枚举子数组起点,内层循环扩展子数组右端点,时间复杂度O(n),空间复杂度O(1)。
重新放置石块
【哈希表 + 模拟】每次操作把moveFrom[i]的石块都移走,按题意模拟。
将字符串分割为最少的美丽子字符串
【DP】由于字符串长度为n,二进制值低于2^n,可以预处理2^n以内的5的幂的二进制表示,记作pow5。定义f[i]为划分从s[i]开始的后缀,最少要划分多少段,枚举pow_5中的字符串t,设其长度为m,如果从s[i]到s[i+m-1]与t相等,那么有f[i] = f[i + m] + 1。
黑格子的数目
【哈希表 + 枚举】如果(x,y)处有黑格子,那么子矩阵左上角在(x-1,y),(x,y-1),(x,y),(x-1,y-1)都是包含这个黑色格子的,统计这些子矩阵中有多少黑色格子。用哈希表vis记录统计过的子矩阵左上角,不含黑色格子的子矩阵个数是(m-1)*(n-1) - len(vis)。