F Make Them Narrow
题意就是有n个数,现在让你减去k个,让剩下数的最大值减去最小值最小;
首先,排序是一定要的。既然减去了k个数,那剩下还有n-k个数,这就形成了一个区间,而区间的个数就是k+1个,我们可以通过模拟删除除区间内的数之外的数,来枚举每个值。//为什么是k+1个区间自己算一下就知道了
例如
5 2
3 1 5 4 9
排序:1,3,4,5,9 区间大小5-2=3;
区间 [1,3,4]:最大值为 4,最小值为 1,差值为 3
区间 [3,4,5]:最大值为 5,最小值为 3,差值为 2(最小差值)
区间 [4,5,9]:最大值为 9,最小值为 4,差值为 5
点击查看代码
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using lll = unsigned long long;
typedef pair<int, int> PII;
const int N = 1e6 + 5;
const ll M = 1e12;
ll prime[N / 10];
bool isPrime[N];
ll cnt[N];
ll a[N];
int main()
{
int n, k;
cin >> n >> k;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
sort(a + 1, a + n + 1);
ll ans = LONG_LONG_MAX;
for (int i = 1; i <= k+1; i++)
{
ans = min(ans, a[n - k + i - 1] - a[i]);//n-k+i-1是第i个区间的最大值,推一下就知道边界为什么是这个了
}
cout << ans << endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现