[JOI 2024 Final] 室温
[JOI 2024 Final] 室温
题意
给出一个长度为
可以进行若干次操作,每次操作可以任选数
可以选定一个数
思路
首先进行操作等价于将
然后考虑对于固定的序列
当
因为当选定的
当
如果除不尽怎么办呢?是向上取整还是向下取整?
应该是向上取整,因为除不尽时
现在问题就变为了求出序列最小的极差,除以二向下取整就是答案。
首先想到将
发现问题:我可以将
这样新的极差就变为了
注意原始的极差也要统计入答案。
代码
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 5e5 + 5;
int ans = 1e18, n, t, a[N];
signed main() {
cin >> n >> t;
for (int i = 1; i <= n; i ++)
cin >> a[i], a[i] %= t;
sort(a + 1, a + n + 1);
ans = (a[n] - a[1] + 1) / 2;
for (int i = 1; i < n; i ++)
ans = min(ans, (a[i] + t - a[i + 1] + 1) / 2);
cout << ans;
return 0;
}
本文来自博客园,作者:maniubi,转载请注明原文链接:https://www.cnblogs.com/maniubi/p/18449280,orz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】