AtCoder Weekday Consest 赛情分析及题解 | 汇总(更新至 AWC 0101 Beta)
我把自己练习过的AtCoder ABC题目都整理了一下。虽然网站上有许多高手的解法,但因为我自己也是初学者,所以只用了比较容易理解的方法来分析和解答。如果你也在学习的话,希望这些内容能对你有一点帮助。
AWC 0101 Beta
赛情分析
| 题号 | 题目名称 | 难度 | 考察算法 | 一句话思路总结 |
|---|---|---|---|---|
| A | City with Power Shortage | ⭐ | 模拟 / 简单统计 | 遍历所有输电线路,将每条线路的容量 \(W_j\) 分别累加到其两端城市 \(U_j\) 和 \(V_j\) 的可供电量 \(T_i\) 中,最后遍历所有城市统计满足 \(T_i < S_i\) 的"电力不足城市"数量,时间复杂度 \(O(N + M)\),空间复杂度 \(O(N)\)。 |
| B | A Single Strike of Dominoes | ⭐⭐⭐ | 整数二分 + 模拟验证 | 对施加的力 \(X\) 进行二分搜索(范围 \([1, 10^9]\)),每次用 check(x) 模拟:先将所有柱子耐久度减去 \(X\),然后从左到右遍历,若第 \(i\) 根柱子倒塌(耐久度 \(\le 0\))则第 \(i+1\) 根额外减 \(1\),最后判断是否全部倒塌,根据 check 结果调整二分边界,时间复杂度 \(O(N \log A_{\max})\),空间复杂度 \(O(N)\)。 |
| C | Chain of Infection | ⭐⭐⭐⭐ | 树形DP / BFS层级传播(多轮感染模拟) | 初始感染 \(D_i > 0\) 的节点,然后按轮次从叶子向上模拟感染传播:每轮中所有满足"被感染子节点数 $a > $ 未被感染子节点数 \(b\)"的未感染节点同时被感染,重复直到无新增感染,由于每轮感染状态基于该轮开始时的状态同时判定,可用BFS按层处理或反复DFS直到收敛,时间复杂度 \(O(N \times \text{轮数})\)。 |
| D | Tiling Plan | ⭐⭐⭐ | GCD + 因子枚举 | 先求所有房间 \((H_i, W_i)\) 各自最大公约数的总GCD \(g = \gcd(g_1, g_2, \ldots, g_N)\)(其中 \(g_i = \gcd(H_i, W_i)\)),则合法边长 \(d\) 必为 \(g\) 的因子;枚举 \(g\) 的所有因子并按从大到小排序,对每个候选 \(d\) 验证是否满足 \(\frac{H_i}{d} \times \frac{W_i}{d} \equiv 0 \pmod{S_i}\)(即瓷砖数量为 \(S_i\) 的倍数),第一个满足条件的即为最大边长,时间复杂度 \(O(\sqrt{g} \times N)\),空间复杂度 \(O(\sqrt{g})\)。 |
| E | Choosing Flowerbed Intervals | ⭐⭐⭐⭐ | 双指针 + 单调队列 + 哈希表 | 用双指针维护满足两个条件的最大窗口:右指针 \(j\) 从左到右枚举,用单调递增/递减队列分别维护区间 \([i,j]\) 的最小值和最大值(保证条件2),用 map 维护区间内不同品种的数量 \(D\)(保证条件1),当 \(D \times (j-i+1) > K\) 或 \(\max - \min > M\) 时收缩左指针 \(i\) 直到满足条件,以 \(j\) 为右端点的合法区间数为 \((j-i+1)\),累加得到答案,时间复杂度 \(O(N \log N)\)(map 操作),空间复杂度 \(O(N)\)。 |
题目
题解:AtCoder AT_awc0101_a City with Power Shortage
题解:AtCoder AT_awc0101_b A Single Strike of Dominoes
题解:AtCoder AT_awc0101_c Chain of Infection
题解:AtCoder AT_awc0101_d Tiling Plan
题解:AtCoder AT_awc0101_e Choosing Flowerbed Intervals
AWC 0098 Beta
赛情分析
| 题号 | 题目名称 | 难度 | 考察算法 | 一句话思路总结 |
|---|---|---|---|---|
| A | Error Analysis of Temperature Forecasts | ⭐ | 模拟 | 对每个地点计算 \(D\) 天预报误差绝对值之和,取最大值。 |
| B | Library Book Lending | ⭐⭐ | 整数二分 / 排序 | 将书籍要求 \(T_j\) 排序,对每个学生 \(S_i\) 二分查找满足 \(T_j \le S_i\) 的数量。 |
| C | Highway Discount Pass | ⭐⭐⭐ | KMP + 贪心 | KMP找出所有 \(T\) 在 \(S\) 中的匹配位置,贪心选不重叠区间最大化数量。 |
| D | City Tour Rally | ⭐⭐⭐ | 线性DP-二维 | \(dp[i][j]\) 表示第 \(i\) 天在城市 \(j\) 的最大分数,反向建图枚举前驱转移。 |
| E | Maintenance of Waterways | ⭐⭐⭐⭐⭐ | 树形DP | \(dp0[u]\)/\(dp1[u]\) 表示父边不由/由 \(u\) 负责的最小额外费用,贪心排序子边费用差枚举选择数量。 |
题目
题解:AtCoder AT_awc0098_a Error Analysis of Temperature Forecasts
题解:AtCoder AT_awc0098_b Library Book Lending
题解:AtCoder AT_awc0098_c Highway Discount Pass
题解:AtCoder AT_awc0098_d City Tour Rally
题解:AtCoder AT_awc0098_e Maintenance of Waterways
AWC 0089 Beta
赛情分析
| 题号 | 题目名称 | 难度 | 考察算法 | 一句话思路总结 |
|---|---|---|---|---|
| A | Correcting the Household Account Book | ⭐ | 模拟 / 前缀和 | 维护总和,每次操作直接减去被清零位置的值即可。 |
| B | Connecting Pipes | ⭐⭐ | 贪心 / 排序 | 将管道按有效长度降序排序,依次选取并维护最大长度,注意每多选一根管道需扣除连接成本K。 |
| C | A Walk to Cherry Blossom Viewing | ⭐⭐⭐ | 双指针(滑动窗口) | 用滑动窗口维护成本不超过预算B的连续散步道区间,动态调整左右指针并更新最大景点分数和。 |
| D | Cheapest Route | ⭐⭐⭐ | Dijkstra最短路 | 边权为两端城市人口乘积,从城市1跑单源最短路,取所有机场城市的最小距离。 |
| E | Painting the Fence | ⭐⭐⭐⭐⭐ | 离散化 + 扫描线 + 差分 | 将区间端点离散化后用扫描线维护当前覆盖集合,利用差分数组统计忽略K个连续指令后的最大覆盖长度。 |
题目
题解:AtCoder AT_awc0089_a Correcting the Household Account Book
题解:AtCoder AT_awc0089_b Connecting Pipes
题解:AtCoder AT_awc0089_c A Walk to Cherry Blossom Viewing
题解:AtCoder AT_awc0089_d Cheapest Route
题解:AtCoder AT_awc0089_e Painting the Fence
AWC 0088 Beta
赛情分析
| 题号 | 题目名称 | 难度 | 考察算法 | 一句话思路总结 |
|---|---|---|---|---|
| A | Bus Departure Time | ⭐ | 模拟 | 所有学生上车完毕的时间为 \(T_i\) 的最大值,加上 \(K\) 即为发车信号时间。 |
| B | Bus Tour Group Division | ⭐⭐ | 贪心 / 排序 | 将出发时间排序后贪心分组,每组以第一个元素为基准,差值超过 \(K\) 时开启新组。 |
| C | Farm Harvest Festival | ⭐⭐⭐ | 差分 / 前缀和 | 用差分数组标记所有被覆盖过的田地,前缀和还原后累加被覆盖位置的 \(A_i\)。 |
| D | Control Panel Operation Sequence | ⭐⭐⭐⭐ | 全排列枚举 + 哈希表 | \(N \leq 9\) 允许枚举 \(N!\) 种操作顺序,用 map 离线记录每种结果序列的出现次数。 |
| E | Intervals That Can Be Arranged Alternately | ⭐⭐⭐⭐⭐ | 莫队算法 | 好区间判定转化为前缀差分数组中两位置差值绝对值不超过 1,用莫队离线统计数对。 |
题目
题解:AtCoder AT_awc0088_a Bus Departure Time
题解:AtCoder AT_awc0088_b Bus Tour Group Division
题解:AtCoder AT_awc0088_c Farm Harvest Festival
题解:AtCoder AT_awc0088_d Control Panel Operation Sequence
题解:AtCoder AT_awc0088_e Intervals That Can Be Arranged Alternately
浙公网安备 33010602011771号