尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

题解:P14058 【MX-X21-T3】[IAMOI R5] 两个人的演唱会

题解:P14058 【MX-X21-T3】[IAMOI R5] 两个人的演唱会
📅 发布时间:2026/6/17 23:08:46
P14058:贪心、双指针。

先特判这个环本身极差就不超过 \(m\) 的情况(此时答案为 \(1\))。

原问题在环上,不是很好解决,先考虑解决一个更简单的问题:

小 R 有一个长度为 \(n\) 的,由正整数组成的链 \(a_1,\dots,a_n\),她要你将这个链切成若干段,使得所有段的段内极差都小于等于 \(m\),求分成的最少段数。

这是一个经典的贪心问题。显然,在所有切法中,每次切出最长的极差不超过 \(m\) 的前缀一定不劣。使用双指针维护,动态维护左右指针中间部分的最大值和最小值即可。

现在问题被转化为,我们应该在何处将环断为链,才能得到最优答案。乍一看确实无从下手,因此想到考虑环上的一些“特殊”位置。

考察任意一个最小值位置 \(a_x\),取出它所在的段,那么这一段的极差不超过 \(m\),等价于段内任意一个 \(a_y\) 都满足 \(a_y\le a_x+m\)。符合要求的极长段是唯一的,也就是说,对于任意一种合法的切分方式,\(a_x\) 所在的段都一定包含于这个极长段之中。根据贪心的思想,切出这一极长段一定不劣。

切出这一段后,剩下的部分自然断成了一条链,使用前面提到的双指针即可求出答案。

时间复杂度 \(O(\sum n)\)。

//By: OIer rui_er
#include <bits/stdc++.h>
#define rep(x, y, z) for(int x = (y); x <= (z); ++x)
#define per(x, y, z) for(int x = (y); x >= (z); --x)
#define debug(format...) fprintf(stderr, format)
#define fileIO(s) do {freopen(s".in", "r", stdin); freopen(s".out", "w", stdout);} while(false)
#define endl '\n'
using namespace std;
typedef long long ll;const int N = 3e7 + 5;int T, n, m, a[N];int main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);for(cin >> T; T; --T) {cin >> n >> m;rep(i, 0, n - 1) cin >> a[i];if(*max_element(a, a + n) - *min_element(a, a + n) <= m) {cout << 1 << endl;continue;}int argmin = min_element(a, a + n) - a;int pl = argmin, pr = argmin;auto pre = [&](int x) {return (x + n - 1) % n;};auto nxt = [&](int x) {return (x + 1) % n;};while(a[pre(pl)] - a[argmin] <= m) pl = pre(pl);while(a[nxt(pr)] - a[argmin] <= m) pr = nxt(pr);int ans = 1, p = nxt(pr), mx = a[p], mn = a[p];while(p != pl) {chkmax(mx, a[p]);chkmin(mn, a[p]);if(mx - mn > m) {++ans;mx = mn = a[p];}p = nxt(p);}cout << ans + 1 << endl;}return 0;
}

相关新闻

  • 深入解析Wallarm安全边缘:API边缘的即时防护技术
  • A Great Beginning
  • 邮件系统的未来趋势:技术革新与智能化的未来

最新新闻

  • TC1306双通道LDO稳压器选型、设计与实战调试全解析
  • 【毕业设计】基于 Python+Django 的校园请假信息可视化分析系统的设计与实现 基于 Python+Django 的高校教务请假可视化管理系统(源码+文档+远程调试,全bao定制等)
  • 2026 年性价比之选:西安正规人力资源服务商哪家靠谱热门推荐盘点 - 品研笔录
  • 2026淮南中考300多分的孩子去哪?这所公办中职让你5年拿大专,毕业还包就业 - 我叫小周
  • # 2026年内蒙古AI搜索优化公司实力排行榜:呼和浩特市包头市技术成熟服务专业,基于AI搜索优化的5大权威推荐榜单 - 十大品牌榜
  • 温州汽车贴膜怎么选?行业盘点、门店横向对比与完整避坑攻略 - 国麟测评

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号