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

U535992 J-C 小梦的宝石收集

问题描述

题目

给定序列 a,进行 k 次操作,每次把最大的数变最小的,或把最小的变成最大的,求序列的最小极差。

💡 核心思路

如果暴力,每次枚举两种情况,会爆 (2^N)。

其次,可以证明:任意操作序列,都可以等价地调整为:

  • 先进行 i 次「最小 → 最大」
  • 再进行 j 次「最大 → 最小」

或反过来。

因此只需考虑两种操作顺序。

固然要排序;

那么情况就只有两种:

第一种:

先进行 i 次把最小的变成最大的,再进行 j 次把最大的变成最小的。

第二种:

先进行 j 次把最大的变成最小的,再进行 i 次把最小的变成最大的。

设操作最后得到的极差为 a[r] - a[l];

l 和 r 如何确定?

🦢 第一种:

先进行 i 次 最小 → 最大,数组多了 i 个最大值

再进行 j 次 最大 → 最小,

  • 如果 j ≤ i:
    只会消掉这 i 个新增的最大值中的 j 个
    最大值仍是 a[n-1]

  • 如果 j > i:
    会消掉所有新增最大值 + 原本的最大值
    所以最大值向左移动 j-i 位

所以 r = n-1 - max(0, j-i)

🦢 则第二种:

l = max(0, i-j);

r = n-1 - j;

故:对 i 进行遍历(0-k),每次遍历讨论两种操作模式,取较小值即可;


代码实现

完整代码

#include <bits/stdc++.h> #define all(a) a.begin(),a.end() #define rall(a) a.rbegin(),a.rend() #define LL long long #define MAX INT_MAX #define LMAX LLONG_MAX #define rep(i,a,b) for(int i=(int)a;i<int(b);++i) using namespace std; void solve(){ int n,k; cin>>n>>k; vector<int>a(n); rep(i,0,n) cin>>a[i]; sort(all(a)); //特判: if(k>=n-1){ cout<<"0\n"; return; } LL ans=a[n-1]-a[0]; rep(i,0,k+1){ int j=k-i; int l=i; int r=n-1-max(0,j-i); if(l<=r) ans=min(ans,(LL)a[r]-a[l]); else {ans=0;break;} l=max(0,i-j); r=n-1-j; if(l<=r) ans=min(ans,(LL)a[r]-a[l]); else {ans=0;break;} } cout<<ans<<'\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); int tc=1; //cin>>tc; while(tc--){

solve();
}
return 0;
}

## 复杂度分析 排序:O(n log n) 枚举 i:O(k) 总复杂度:O(n log n + k)等价于 O(n log n) ## 🎯 总结 本题关键在于两个转化: 1. 操作顺序可以重排为“先一类再另一类”
http://www.jsqmd.com/news/1107068/

相关文章:

  • 自动售货机总是卡货?教你几招轻松搞定~YH
  • 什么是联盟营销(Affiliate Marketing)?2026海内外创作者商业化指南
  • 从Markdown到PDF:前端Canvas排版优化实践
  • 基于STM32单片机智能窨井盖井报警系统 倾斜角度水位气体WIFI 2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • navicat执行事务操作,不小心关闭session窗口后事务结果如何?
  • 销售讲不清产品内部结构?3D展示让客户一眼看透
  • Cognee — 开源 AI 记忆知识库平台
  • 上就是代码的解析,相信很多人疑惑的地方就是Vector128.Max做了什么,我们可以构造一个代码,让大家简单的看出来发生了什么。代码和运行结果如下所示:
  • AI驱动的销售商机管理工具DingTalkA1实战解析
  • API 服务端数据库全表设计与 SQL 实现
  • QQ群聊天记录分析终极指南:三分钟解锁你的群聊数据洞察力
  • 计算机毕业设计之基于大数据加护的国产美妆行业发展状况研究
  • 多款远程桌面工具实测分享,谁才是打工人心中 TOP1?
  • AI Agent 开发实战:用LangChain4j构建你的第一个Java智能体
  • 无犯罪公证书在哪里办理?无犯罪公证书材料是啥?
  • 从小智停服说起:AI精神陪伴与社交产品硬伤分析
  • 从记忆到人格现行:我如何设计一个会“长出性格”的陪伴智能体
  • 天龙八部单机版GM工具终极指南:5分钟掌握游戏数据管理
  • 突破万亿Token!中国大模型“Token出海”大爆发,开发者如何搭上这趟红利快车?
  • GPT-5发布:当AI能操控你的整个桌面,运维还能信谁?
  • PDF 加盖骑缝章时如何使用数字签名
  • 基于 RBAC 的细粒度工具访问控制:MCP 权限模型与安全策略实施
  • ISO 13355:2016简单介绍,ISO 13355标准是啥
  • PvZ Tools:重新定义你的植物大战僵尸游戏体验
  • 游戏运营的核心资产:当玩家信任成为长线运营的胜负手
  • 数据库的种类
  • 2026 每日阅读|NEMAT:用 GROMACS 拆开膜蛋白药物亲和力的“障眼法”
  • 豆包怎么生成 Word 文档?Markdown 转 docx、表格和公式处理思路
  • 2026二三极管交易平台哪家好?5个核心判断标准
  • CBCX外汇平台结构表现会不会更省事?