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

题解:AtCoder JOISC 2019E ふたつの料理 (Two Dishes)

题意

有两道菜,做第一道菜有 \(n\) 个步骤,完成第 \(i\) 步需要 \(a_i\) 分钟,做第二道菜有 \(m\) 个步骤,完成第 \(j\) 步需要 \(b_j\) 分钟。两道菜的步骤可以交替执行,中途不能休息。

若你在 \(s_i\) 分钟内完成第一道菜的第 \(i\) 步,则获得 \(p_i\) 分。若你在 \(t_j\) 分钟内完成第二道菜的第 \(j\) 步,则获得 \(q_j\) 分。求做完两道菜后的最大得分。

\(1\leq n,m\leq 10^6\)\(1\leq a_i,b_j\leq 10^9\)\(1\leq s_i,t_j\leq 2\times 10^{15}\)\(|p_i|,|q_j|\leq 10^9\)

题解

\(a,b\) 做前缀和,容易得到一个 \(\mathcal{O}(nm)\) 的 DP:令 \(f_{i,j}\) 表示第一道菜做了前 \(i\) 步,第二道菜做了前 \(j\) 步,能获得的最大的分。转移枚举最后一步做的是哪一道菜:

\[f_{i,j}\gets\max(f_{i,j},f_{i-1,j}+[a_i+b_j\leq s_i]p_i)\\f_{i,j}\gets\max(f_{i,j},f_{i,j-1}+[a_i+b_j\leq t_j]q_j) \]

预处理 \(c_i\) 表示最大的 \(j\) 使得 \(b_j\leq s_i-a_i\)\(d_j\) 表示最大的 \(i\) 使得 \(a_i\leq t_j-b_j\)。自然地放到平面上考虑,将所有 \((i,c_i)\)\((d_j,j)\) 标为关键点。考虑一条从 \((0,0)\)\((n,m)\) 的路径,发现问题可以转化成:若点 \((i,c_i)\) 在路径的上方(非严格)则可以获得 \(p_i\) 分,若点 \((d_j,j)\) 在路径的下方(非严格)则可以获得 \(q_j\) 分,最大化得分。如下图所示。

考虑统一一下方向,先令答案为 \(\sum p_i\),那么变成若点 \((i,c_i)\) 在路径的下方(严格)则可以获得 \(-p_i\) 分,然后将 \((d_j,j)\) 向右下移动变为 \((d_j+1,j-1)\)。问题转化成最大化路径下方(严格)的点权。

考虑此时的 DP:令 \(f_{i,j}\) 表示从 \((0,0)\) 走到 \((i,j)\),路径下方的最大点权和。设 \(w_{i,j}\)\((i,j)\) 处的点权总和,\(S_{i,j}=\sum\limits_{k=0}^{j-1}w_{i,k}\)\((i,j)\) 下方的点权总和。转移在向右走时累加下方点权和:

\[\begin{align*} f_{i,j}&\gets\max(f_{i,j},f_{i,j-1})\\ f_{i,j}&\gets\max(f_{i,j},f_{i-1,j}+S_{i,j}) \end{align*} \]

注意由于一些点向右下方移动了一个单位,最终答案应为 \(f_{n,m}+S_{n+1,m}\)

DP 的转移变得比较优美了,考虑整体 DP 优化。我们将 \(i\) 这一维压掉,那么转移相当于先对于每个 \(1\leq j\leq m\),令 \(f_j\gets f_j+S_{i,j}\),再对 \(f\) 做一次前缀 \(\max\)。考虑维护差分数组 \(g_j=f_j-f_{j-1}\),此时第一步操作变为对于每个 \(1\leq j\leq m\),令 \(g_j\gets g_j+w_{i,j-1}\),而 \(w_{i,j}\) 有值的位置只有 \(\mathcal{O}(n+m)\) 个,这很不错。

考察取前缀最大值的过程在差分数组上的表现。依次考虑 \(f\) 的每个前缀最大值 \(f_{p_1}\leq\cdots\leq f_{p_k}\):将 \(g_{p_1+1\sim p_2-1}\) 置为 \(0\),令 \(g_{p_2}\gets \sum\limits_{k=p_1+1}^{p_2}g_k\),将 \(g_{p_2+1\sim p_3-1}\) 置为 \(0\)……可以发现这个过程等价于令 \(t=p_{i}+1,sum=0\),不断执行以下操作:

  • \(sum\gets sum+g_t\)
  • \(sum\geq 0\),则令 \(g_t\gets sum\),停止操作。
  • 否则令 \(g_t\gets 0\)\(t\gets t+1\)

map 维护 \(g\) 的非 \(0\) 项,每次在 \(x\) 的位置单点操作后,从该位置开始向后执行上述操作即可。显然除了最后一个位置,被遍历的位置都会被删除,时间复杂度为 \(\mathcal{O}((n+m)\log(n+m))\)

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

相关文章:

  • 装修/装饰/家装/装修设计品牌首选创艺装饰——深度覆盖南昌、宜春、吉安、赣州、上饶、景德镇、萍乡、抚州、九江、沈阳、青岛、嘉兴、武汉、永州、桂林、长沙等多城市 - 全局中转站
  • LLL与BKZ算法
  • 2025最新装修设计十大品牌评测!优质公司权威榜单发布,南昌、宜春、吉安、赣州、上饶、景德镇、萍乡、抚州、九江、沈阳、青岛、嘉兴、武汉、永州、桂林、长沙等多省市全覆盖 - 全局中转站
  • 2025年兰州网络推广公司推荐top6:助力企业数字化增长 - 2025年品牌推荐榜
  • 2025 最新家装品牌 TOP10 评测!优质公司榜单发布,为南昌、宜春、吉安、赣州、上饶、景德镇、萍乡、抚州、九江、沈阳、青岛、嘉兴、武汉、永州、桂林、长沙等多城提供专业服务 - 全局中转站
  • 2025最新装饰品牌TOP9评测!优质公司权威榜单发布,服务深度覆盖南昌、宜春、吉安、赣州、上饶、景德镇、萍乡、抚州、九江、沈阳、青岛、嘉兴、武汉、永州、桂林、长沙等城 - 全局中转站
  • 2025最新装修品牌TOP10评测!优质施工公司榜单发布,服务深度覆盖南昌、宜春、吉安、赣州、上饶、景德镇、萍乡、抚州、九江、沈阳、青岛、嘉兴、武汉、永州、桂林、长沙等地 - 全局中转站
  • 如何选择兰州网络推广公司?2025年见解 - 2025年品牌推荐榜
  • 兰州口碑好的AI大模型GEO服务商2025年12月榜单 - 2025年品牌推荐榜
  • C 输入 输出总结
  • gpu资源
  • 2025年兰州AI大模型GEO服务商精选推荐 - 2025年品牌推荐榜
  • 2025年兰州GEO服务商综合评估报告:六家顶尖企业深度解析 - 2025年品牌推荐榜
  • 2025年12月AI智能大模型GEO运营服务商推荐 top 5 - 2025年品牌推荐榜
  • 设计一个「权限缓存专用」结构(User / Role / Permission 分离)
  • 10大经典盈利模式 - 智慧园区
  • 缓存优化L1L2
  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构排名榜单:家长必看指南 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构评估报告:顶尖推荐与深度分析 - 2025年品牌推荐榜
  • 兰州高考文化课怎么报名?2025年推荐 - 2025年品牌推荐榜
  • 2025年12月兰州寒假辅导机构排行Top5 - 2025年品牌推荐榜
  • 2025年兰州寒假伴学机构口碑排行榜 - 2025年品牌推荐榜
  • 兰州高考文化课集训推荐:2025年优质机构盘点 - 2025年品牌推荐榜
  • Codeforces Round 1067 (Div. 2) E Sink
  • 使用DNGuard加密并打包C# .NET Core程序为单一EXE文件
  • 强壳保护NET代码!Dnguard 4.9.4最新企业旗舰版下载地址
  • 妙妙计算1
  • Python中的super()
  • 造船行业液压系统气动高压球阀技术应用指南:螺纹式高压球阀、BKH高压球阀、RKH高压球阀、不锈钢高压球阀、卡套式高压球阀 - 优质品牌商家