前篇:2022 上半年周赛题目总结

周赛包含大量算法套路题,我从下半年的 场周赛,共计 道题目中,整理了一些「能学到技巧」的题目,供各位练习。

每道题目我都写了题解,以及对应的视频讲解,可以在每道题的题解区看到。

我把周赛题目分为以下七类:

  1. 模拟
  2. 技巧
  3. 动态规划
  4. 数据结构
  5. 图论
  6. 数学
  7. 思维题

1. 模拟

模拟指按照题目要求实现相应代码,一般暴力即可通过。

某些模拟题会有点复杂,这也能很好地锻炼实现代码的能力

注 1:常见于周赛第一题(约占 )、第二题(约占 )和第三题(约占 )。

注 2:表格已按照难度排序(下同)。

题目难度
2437. 有效时间的数目1427
2349. 设计数字容器系统1540
2456. 最流行的视频创作者1548
2409. 统计共同度过的日子数1562
2512. 奖励最顶尖的 K 名学生1636
2502. 设计内存分配器1746
2353. 设计食物评分系统1782

2. 技巧

技巧指一些比较套路的算法,包括双指针、滑动窗口、二分(主要指二分答案)、前缀和、差分、前后缀分解、位运算、二进制枚举、贡献法等。这些技巧相对容易掌握,想在周赛上分的同学可以优先学习这些内容。

顺带一提,我一般把窗口大小不固定的叫做双指针,窗口大小固定的叫做滑动窗口。

为了不剧透,这些题目我就不分类了,而是写在备注中。

注:常见于周赛第二题(约占 )和第三题(约占 )。

题目难度备注
2483. 商店的最少代价1495前后缀分解
2461. 长度为 K 子数组中的最大和1553非常标准的滑动窗口题
2425. 所有数对的异或和1622贡献法
2420. 找到所有好下标1695前后缀分解
2397. 被列覆盖的最多行数1719二进制枚举
2401. 最长优雅子数组1750位运算与双指针结合的好题(暴力也可以过)
2381. 字母移位 II1793差分
2516. 每种字符至少取 K 个1947绝大多数双指针题目都是算子数组/子串,而这题是算的前缀+后缀,如此变形后要怎么做呢?
2439. 最小化数组中的最大值1965二分答案之最小化最大值(看到最小和最大就要往二分答案上想)
2517. 礼盒的最大甜蜜度2020二分答案
2444. 统计定界子数组的数目2093较为复杂的多指针题目,你能写出简洁的代码吗?

3. 动态规划

周赛常客。

如果你很难想出状态转移方程,以及递推的顺序,可以先从记忆化搜索开始思考,然后转换到递推上。具体请看 动态规划入门:从记忆化搜索到递推【基础算法精讲 17】

记忆化搜索像是自动挡,无需思考递推顺序,边界条件也容易确认;而递推像是手动挡,需要仔细确认递推的顺序以及初始值。但记忆化搜索并不是万能的,某些题目递推的写法可以结合数据结构等来优化时间复杂度。

注:常见于周赛第四题(约占 ),偶见于第三题(约占 )。

题目难度备注
2466. 统计构造好字符串的方案数1694本质上是 70. 爬楼梯
2400. 恰好移动 k 步到达某一位置的方法数目1751也有数学解
2369. 检查数组是否存在有效划分1780
2370. 最长理想子序列1835
2327. 知道秘密的人数1894
2435. 矩阵中和能被 K 整除的路径1952
2328. 网格图中递增路径的数目2001
2472. 不重叠回文子字符串的最大数目2013中心扩展法
2430. 对字母串可执行的最大删除数2102
2376. 统计特殊整数2120数位 DP,这类题目非常套路,掌握模板后就可以随便秒了
2407. 最长递增子序列 II2280线段树优化 DP
2458. 移除子树后的二叉树高度2299树形 DP
2478. 完美分割的方案数2344
2518. 好分区的数目241401 背包,需要一些思维转换
2463. 最小移动总距离2454

4. 数据结构

包括堆(优先队列)、单调栈、单调队列、字典树、并查集、树状数组、线段树等。

学习这些只是开始,能否灵活运用才是关键。

注:常见于周赛第四题(约占 )。

题目难度备注
2416. 字符串的前缀分数和1725字典树
2462. 雇佣 K 位工人的总代价1764最小堆
2398. 预算内的最多机器人数目1917双指针+单调队列
2426. 满足不等式的数对数目2030式子变形+逆序对模型+树状数组
2402. 会议室 III2093最小堆
2382. 删除操作后的最大子段和2136并查集
2454. 下一个更大元素 IV2175单调栈
2503. 矩阵查询可获得的最大分数2196离线询问+并查集/最小堆
2334. 元素值大于变化阈值的子数组2381并查集/单调栈
2421. 好路径的数目2445并查集

5. 图论

周赛中的图论题目比较少,除了下面选的 DFS、BFS、拓扑排序、基环树、二分图判定等,还有最短路、DFS 时间戳等(这些可以在上半年的周赛题目中学到)。

注:偶见于周赛第三题(约占 )和第四题(约占 )。

题目难度备注
2368. 受限条件下可到达节点的数目1477DFS/BFS 典型题
2385. 感染二叉树需要的总时间1711DFS+BFS
2359. 找到离给定两个节点最近的节点1715
2360. 图中的最长环1897内向基环树+时间戳技巧
2509. 查询树中环的长度1948最近公共祖先
2392. 给定条件下构造矩阵1961拓扑排序
2467. 树上最大得分和路径2053
2493. 将节点分成尽可能多的组2415二分图判定(可选)+BFS

6. 数学

主要考察的是数论(质数、GCD、LCM、逆元等)和组合数学。

注:占比很少,不足

题目难度备注
2507. 使用质因数之和替换后可以取到的最小值1500质因数分解
2470. 最小公倍数为 K 的子数组数目1560LCM
2447. 最大公因数等于 K 的子数组数目1603GCD
2344. 使数组可以被整除的最少删除次数1641GCD
2453. 摧毁一系列目标1762同余
2514. 统计同位异构字符串数目2069组合数学+逆元
2513. 最小化两个数组中的最大值2302二分答案+LCM+容斥
2338. 统计理想数组的数目2615质因数分解+放球问题

7. 思维题

包含贪心、脑筋急转弯等,挑选一些比较有趣的题目。

注:常见于周赛第二题(约占 )、第三题(约占 )和第四题(约占 )。

题目难度备注
2383. 赢得比赛需要的最少训练时长1413上帝视角下的贪心
2419. 按位与最大的最长子数组1496脑筋急转弯
2337. 移动片段得到字符串1693脑筋急转弯
2498. 青蛙过河 II1759
2332. 坐上公交的最晚时间1841脑筋急转弯
2350. 不可能得到的最短骰子序列1961
2488. 统计中位数为 K 的子数组1999等价转换
2448. 使数组相等的最小开销2005转换成中位数贪心
2412. 完成所有交易的初始最少钱数2092
2499. 让数组不相等的最小总代价2633
2386. 找出数组的第 K 大和2648

其他算法套路(每日一题题解精选)

致谢

最后

欢迎点赞我在B站讲算法,欢迎大家关注 B站@灵茶山艾府

评论 (38)