当前位置: 首页 > news >正文

AtCoder Beginner Contest 赛情分析及题解 | 汇总(更新至 ABC 463)

我把自己练习过的AtCoder ABC题目都整理了一下。虽然网站上有许多高手的解法,但因为我自己也是初学者,所以只用了比较容易理解的方法来分析和解答。如果你也在学习的话,希望这些内容能对你有一点帮助。


ABC 464

赛情分析

题号题目名称难度考察算法一句话思路总结
ADecisive Battle字符串遍历 / 计数遍历字符串S SS统计字符EW的出现次数,分别代表东军和西军士兵人数,直接比较两个计数器大小输出EastWest,由于字符串长度为奇数保证结果必不相等,时间复杂度O ( ∣ S ∣ ) O(|S|)O(S),空间复杂度O ( 1 ) O(1)O(1)
BCrop⭐⭐模拟 / 二维数组边界裁剪分别从上、下、左、右四个方向扫描二维图像,用标记数组记录需要移除的全白行/列,最后输出未被标记的像素即可;更简洁的做法是直接预处理出包含黑色像素的最小行区间和最小列区间,只输出该区间内的像素,时间复杂度O ( H × W ) O(H \times W)O(H×W),空间复杂度O ( H × W ) O(H \times W)O(H×W)
CPlumage Palette⭐⭐⭐双指针 + 哈希表(map将所有鸟按变色天数D i D_iDi升序排序,用map维护当前各颜色的鸟的数量,初始时所有鸟为颜色A i A_iAi;然后用双指针遍历天数i = 1 ∼ M i=1 \sim Mi=1M,对于每一天将所有D j = i D_j = iDj=i的鸟从颜色A j A_jAj改为B j B_jBj(对应map中计数减1/加1,计数为0时删除),每天输出map.size()即为当天颜色种类数,时间复杂度O ( N log ⁡ N + M + N log ⁡ N ) O(N \log N + M + N \log N)O(NlogN+M+NlogN)(排序 + 遍历 +map操作),空间复杂度O ( N ) O(N)O(N)
DCelester⭐⭐⭐线性DP(一维状态转移)定义d p [ i ] [ 0 / 1 ] dp[i][0/1]dp[i][0/1]表示第i ii天最终为雨天(0)/晴天(1)时的最大幸福值,初始状态根据是否改变第1天天气确定,然后按天递推:d p [ i ] [ j ] = max ⁡ k ∈ { 0 , 1 } ( d p [ i − 1 ] [ k ] + c o s t ( j ) + g a i n ( k , j ) ) dp[i][j] = \max_{k \in \{0,1\}}(dp[i-1][k] + cost(j) + gain(k,j))dp[i][j]=maxk{0,1}(dp[i1][k]+cost(j)+gain(k,j)),其中c o s t ( j ) cost(j)cost(j)为改变天气的代价(0 00− X i -X_iXi),g a i n ( k , j ) gain(k,j)gain(k,j)为若k = 0 k=0k=0j = 1 j=1j=1则获得Y i − 1 Y_{i-1}Yi1收益,最终答案为max ⁡ ( d p [ n ] [ 0 ] , d p [ n ] [ 1 ] ) \max(dp[n][0], dp[n][1])max(dp[n][0],dp[n][1]),时间复杂度O ( T × N ) O(T \times N)O(T×N),空间复杂度O ( N ) O(N)O(N)
EFill-Rect Query⭐⭐⭐逆向DP / 后缀最大值传播由于每次操作都是覆盖以( 1 , 1 ) (1,1)(1,1)为左上角的矩形,格子( i , j ) (i,j)(i,j)的最终颜色由所有满足R k ≥ i R_k \ge iRkiC k ≥ j C_k \ge jCkj的操作中编号最大的那个决定;将每次操作仅记录在其右下角( R k , C k ) (R_k, C_k)(Rk,Ck),然后从右下角向左上角做二维DP:a [ i ] [ j ] = max ⁡ ( a [ i ] [ j ] , a [ i + 1 ] [ j ] , a [ i ] [ j + 1 ] ) a[i][j] = \max(a[i][j], a[i+1][j], a[i][j+1])a[i][j]=max(a[i][j],a[i+1][j],a[i][j+1])a [ i ] [ j ] a[i][j]a[i][j]即为覆盖( i , j ) (i,j)(i,j)的最后操作编号,输出对应字符即可,时间复杂度O ( H × W + Q ) O(H \times W + Q)O(H×W+Q),空间复杂度O ( H × W ) O(H \times W)O(H×W)
F

题目

题解:洛谷 AT_abc464_a Decisive Battle

题解:洛谷 AT_abc464_b Crop

题解:洛谷 AT_abc464_c Plumage Palette

题解:洛谷 AT_abc464_d Celester

题解:洛谷 AT_abc464_e Fill-Rect Query

ABC 463

赛情分析

题号题目名称难度考察算法一句话思路总结
A16:9模拟 / GCD用最大公约数将宽高比化简,判断是否等于16 : 9 16:916:9
BTrain Reservation模拟遍历所有列车,检查目标列X XX是否存在至少一个o
CTallest at the Moment⭐⭐排序 + 二分 + 后缀最大值按离开时间排序后预处理后缀最大身高,对每个查询二分找到第一个未离开的位置,取后缀最大值。
DMaximize the Gap⭐⭐⭐整数二分 + 贪心判定按右端点排序后二分答案,贪心验证是否能选出K KK块两两不重叠且间距至少为m i d midmid的布。
ERoads and Gates⭐⭐⭐⭐Dijkstra + 虚拟节点传送门两两之间的完全图通过虚拟节点拆分为O ( N ) O(N)O(N)条边,再跑 Dijkstra 求最短路。
FSenshuraku⭐⭐⭐⭐⭐组合概率 + 分类讨论枚举N NN场比赛结果,利用组合数计算"最大值选手中均匀随机选冠军"的概率,对998244353 998244353998244353取模。

题目

题解:洛谷 AT_abc463_a 16:9

题解:洛谷 AT_abc463_b Train Reservation

题解:洛谷 AT_abc463_c Tallest at the Moment

题解:洛谷 AT_abc463_d Maximize the Gap

题解:洛谷 AT_abc463_e Roads and Gates

题解:洛谷 AT_abc463_f Senshuraku

http://www.jsqmd.com/news/1130395/

相关文章:

  • 如何用深度强化学习在3天内将斗地主胜率提升50%?DouZero实战指南
  • 基于Java的坦克射击游戏设计与实现
  • 3步搭建Linkding:你的私有书签管理系统完整指南
  • 重塑音频创作边界:Audacity 开源音频编辑器的技术革新与实践指南
  • 终极指南:一键获取国家中小学智慧教育平台电子课本的完整解决方案
  • 苹果触控板在Windows上的完美体验:mac-precision-touchpad驱动配置全攻略
  • 利用ChameleonUltraGUI与MFKEY32 V2算法破解MIFARE Classic密钥实战
  • Faster-Whisper:4倍速语音转录背后的技术革命
  • Ventoy主题定制完全指南:打造个性化启动菜单的3种高级方案
  • Video2X:如何用AI技术让旧视频焕发新生,实现3倍处理速度提升
  • 探索OpenCore Legacy Patcher:为老款Mac注入新生命的3大核心技术
  • 终极跨平台Unity资产提取工具:AssetRipper完全使用指南
  • 最简洁yolov8 C++配置教程
  • 老款Mac升级终极方案:硬件兼容性修复与系统优化工具完整指南
  • 如何永久保存微信聊天记录:WeChatMsg数据自主管理完全指南
  • 如何通过LLPhant构建企业级PHP生成式AI应用?
  • 高性能百度OCR ONNX Runtime C#实现
  • REPENTOGON终极探索:以撒脚本扩展器的深度配置与功能揭秘
  • NVR场景语音对讲 - cann/docs
  • Motion Canvas:用代码创造专业级矢量动画的现代解决方案
  • Shopware 6:5步轻松搭建你的现代化开源电商平台
  • WavTap进阶技巧:提升Mac音频录制质量的5个方法
  • ProperTree:跨平台plist编辑器,告别配置文件格式兼容烦恼
  • AgentKit 与 MCP 集成指南:打造企业级智能体应用
  • File Viewer扩展开发指南:如何自定义新的文件格式渲染器
  • 如何在3分钟内快速搭建AI音乐创作平台:Suno-API完全指南
  • OpCore-Simplify:3步自动化OpenCore EFI配置,黑苹果安装效率提升95%
  • SMUDebugTool:锐龙处理器深度调试与性能优化的终极指南 [特殊字符]
  • 开源革命:OpenCore Legacy Patcher让老Mac重获新生的终极指南
  • Biopython终极指南:生物信息学数据分析的完整解决方案