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

ABC 427 EF

E

\(BFS\) 求最短路

需要注意到,所有垃圾是作为整体一起移动的,因此可能存在垃圾的所有区域一定是原图的某个子矩阵(子矩阵之外的其他区域至少有过一次出界,说明垃圾已被清除),只有 \(H^{2}W^{2}\) 种。而整张图在每个方向的偏移次数也是固定的,即 \(dx \in [-n,n]\)\(dy \in [-m, m]\)。因此,可以用 \((lx, ly, rx, ry, dx, dy)\) \(6\) 个变量构成的元组表示转移状态,进行 \(bfs\) 转移,总状态数是 \(O(H^{3}W^{3})\) 的,刚好符合限制。

转移过程需要注意两个限制:

  1. 偏移时任何垃圾不能经过 \(T\) 所在位置
  2. 每个方向的偏移次数有上下界

最终符合要求的状态:\((lx, ly, rx, ry)\) 表示的子矩阵内没有任何垃圾(子矩阵之外的垃圾至少出过一次界,此时所有垃圾一定都已被清除)。而判断某个子矩阵内是否有垃圾,直接用二维前缀和预处理即可,实现 \(O(1)\) 查询。具体细节见代码。

code

F

折半搜索 + 斐波那契数性质

\(n \leq 60\),即使将区间分成两半,每侧最多仍会有 \(30\) 个数,不能直接状压暴力枚举所有子序列。但注意到子序列需要额外满足一个性质:不能选择任意相邻的两个数。这样每侧的合法子序列个数就会大幅度减少:具体地,一个长度为 \(n\) 的序列,选择满足任意两个数不相邻的子序列的个数为 \(fib_{n}\),而打表发现 \(fib_{30}\) 约为 \(2e6\)。因此每一侧单独的答案可以直接暴力来求;而求两侧合并的答案,也只需要枚举一侧,找另一侧相对应的余数即可,复杂度是 \(O(NlogN)\) 的,\(N = 2e6\),因此折半搜索即可。但需要注意,将序列分成两半后,需要额外考虑去除左侧结尾和右侧开头两个数相邻的情况,这种情况的计算方式和上述相同,只需要钦定一定选这两个数即可。总复杂度为 \(O(NlogN)\),具体细节见代码。

code

http://www.zskr.cn/news/19498.html

相关文章:

  • SHA256文件完整性校验
  • 接口导入 jmeter
  • 备考笔记1
  • 完整教程:今日面试之快问快答:Redis篇
  • 脚本方式安装Python 特定版本
  • 数据结构-单向循环链表
  • 2025高频超声波检测设备厂家权威推荐榜:精准检测与技术创新
  • HEU KMS Activator最新功能使用教程及介绍,附HEU KMS Activator最新版下载
  • PWN手的成长之路-14-ciscn_2019_c_1-ret2libc
  • 国内高速下载镜像
  • 2025数控高速滚齿机厂家权威推荐榜:精密加工与高效产能标杆
  • 2025年10月工作服厂家最新推荐排行榜,春夏秋冬季工作服,工人工作服,车间工作服,防静电工作服公司推荐!
  • 2023-网鼎杯web-thinkshop
  • 2025活性氧化镁厂家最新权威推荐榜:高纯度与稳定性能深度解
  • 通用寄存器, 与RAM寄存器的内存关系
  • C++20中线程类std::jthread的使用 - 详解
  • 2025年CNC高压清洗机厂家权威推荐:高效清洁与耐用性能深
  • C# NUnit
  • GJB 438C学习
  • typora markdown
  • MySQL数据库连接过多(Too many connections)错误处理策略
  • [Python] Python配置uv环境
  • Spring Boot 基础教程 - 指南
  • Linux系统监控报告CPU软锁定问题(soft lockup)诊断方法
  • Java语言操作INI配置文件策略
  • 2025年10月铝型材源头厂家最新推荐排行榜:五大优选企业深度解析!
  • 软件工程第三次作业——结对作业
  • 20232310 2025-2026-1 《网络与系统攻防技术》 实验一实验报告
  • 小分子抗体药物:突破传统抗体瓶颈,在精准治疗中开辟新赛道
  • python nms