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

【题解】P7974 [KSN2021] Delivering Balls

先交换 \(l,r\) 使得 \(l\le r\)

此时想要从 \(l\) 移动到 \(r\),找到区间中最高的位置 \(id\),高度为 \(h_{id}\),则显然在 \(id\) 这个时刻移动到恰好 \(h_{id}\) 高度是最优的,而在每个位置往上走的花费都是定值 \(4\),因此考虑在最开始就移动到 \(h_{id}\) 这个高度,花费的代价就是 \(4(\max(h_i-i)-(h_l-l))\),维护 \(a_i-i\) 的静态区间最值即可。

对称的有往下走的情况,同样维护一个 \(a_i+i\) 的静态区间最值即可。

前面计算的全都是直着上升的部分,还有斜着上升的段,斜着下降的段以及横着走的段,都是容易计算的。把上面所有东西加起来之后化简可以得到答案为:

  • \(mx1\) 表示区间内高度的最大值。
  • \(mx2\) 表示区间内 \(h_i-i\) 的最大值。
  • \(mx3\) 表示区间内 \(h_i+i\) 的最大值。

最后的答案即为:\(mx1+2mx2+2mx3-4h_s-h_t\)(注意最后是 \(s,t\) 不是 \(l,r\))。用三个 ST 表分别维护这三个区间最大值,总时间复杂度为 \(O(n\log n+Q)\),可以通过该题。

int a[N], f[N][20], g[N][20], h[N][20];
inline int qry_f(int l, int r)
{int lgx = __lg(r - l + 1);return max(f[l][lgx], f[r - (1 << lgx) + 1][lgx]);
}
inline int qry_g(int l, int r)
{int lgx = __lg(r - l + 1);return max(g[l][lgx], g[r - (1 << lgx) + 1][lgx]);
}
inline int qry_h(int l, int r)
{int lgx = __lg(r - l + 1);return max(h[l][lgx], h[r - (1 << lgx) + 1][lgx]);
}
signed main()
{cin.tie(0)->sync_with_stdio(false);cout << fixed << setprecision(15);int n, q;cin >> n;for (int i = 1; i <= n; ++i)cin >> a[i];for (int i = 1; i <= n; ++i)f[i][0] = a[i], g[i][0] = a[i] - i, h[i][0] = a[i] + i;for (int i = 1; i < 20; ++i)for (int j = 1; j <= n - (1 << i) + 1; ++j){f[j][i] = max(f[j][i - 1], f[j + (1 << (i - 1))][i - 1]);g[j][i] = max(g[j][i - 1], g[j + (1 << (i - 1))][i - 1]);h[j][i] = max(h[j][i - 1], h[j + (1 << (i - 1))][i - 1]);}cin >> q;while (q--){int l, r;cin >> l >> r;int m1 = qry_f(min(l, r), max(l, r));int m2 = qry_g(min(l, r), max(l, r));int m3 = qry_h(min(l, r), max(l, r));cout << m1 + 2 * (m2 + m3) - 4 * a[l] - a[r] << '\n';}return 0;
}
http://www.jsqmd.com/news/326923/

相关文章:

  • 动态库热加载技术
  • C++中的观察者模式变体
  • 备考锦囊:分享主治考试哪个老师讲得好,点亮通关智慧之光
  • 嵌入式C++安全编码
  • C++中的表达式模板
  • 浅谈莫队
  • 混合储能与并网控制:基于Matlab Simulink的蓄电池与超级电容混合储能系统仿真模型研究
  • 教学风格全解析:考主管护师听哪个老师的课?寻找契合您的领路人。
  • 2026执业药师考试教辅书推荐:三大靠谱教材测评对比,备考就选这一套!
  • 《P4587 [FJOI2016] 神秘数》
  • 十大优秀主管护师老师课程推荐排名
  • 执业药师考试教辅书推荐:口碑排行前五的备考用书,考生看过几本?
  • 详细解释xilinx源语的使用:IDELAYCTRL
  • 探寻临床执业医师资格考试机构,锁定高通过率的良方
  • 2026执业中药师在线课程推荐指南:三大神级课程真实测评,闭眼入不踩坑!
  • 【题解】P10871 [COTS 2022] 皇后 Kraljice
  • 2026执业中药师在线课程怎么选?「口碑王」课程对比,这份推荐够硬核!
  • 深度搜索Agent架构全解析:从入门到进阶,解锁复杂问题求解密码
  • 【学习笔记】拉格朗日插值
  • 超快速的记忆引擎——Supermemory,让你的AI大脑更强大!
  • 股市经验
  • 本地思维导图怕局限?SimpleMindMap+cpolar 让灵感随时联通
  • 【题解】CF2048G Kevin and Matrices
  • 【学习笔记】K-D Tree
  • 【题解】CF1691F K-Set Tree
  • OpenCV(二十六):高斯滤波 - 教程
  • 书匠策AI:教育论文的“数据炼金实验室”,让数字开口说黄金故事
  • 【学习笔记】图上和三元环有关的一类问题
  • 【学习笔记】强制在线 O(1) 逆元
  • 【学习笔记】Chirp-Z Transform