[JOI 2024 Final] 室温

news/2024/10/6 18:47:04/文章来源:https://www.cnblogs.com/maniubi/p/18449280

[JOI 2024 Final] 室温

题意

给出一个长度为 \(n\) 的序列 \(a\),给出数 \(T\)

可以进行若干次操作,每次操作可以任选数 \(a_i\),将 \(a_i \leftarrow a_i - T\)

可以选定一个数 \(t\),使得操作完成后 \(\max |a_i-t|\) 最小 。

思路

首先进行操作等价于将 \(a_i \leftarrow a_i \bmod T\)

然后考虑对于固定的序列 \(a\),如何选定 \(t\) 使答案最小。

\(t = \frac{\min a_i + \max a_i}{2}\) 时,总答案最小。

因为当选定的 \(t = \min a_i\)\(\max a_i\) 时,答案为 \(\max a_i - \min a_i\)

\(t\) 往中间走的时候,答案会变小,最小时就是 \(t\) 取到中点时,答案为极差的一半。

如果除不尽怎么办呢?是向上取整还是向下取整?

应该是向上取整,因为除不尽时 \(t\) 一定往左或往右偏一点,较长的为答案,就是向上取整。

现在问题就变为了求出序列最小的极差,除以二向下取整就是答案。

首先想到将 \(a_i \bmod T\) 后排序,\(a_n-a_1\) 就是最小极差,但发现样例都不过。

发现问题:我可以将 \(a_1\)\(a_i\) 的数少减一个 \(T\),变为 \(a_1+T\)\(a_i+T\)

这样新的极差就变为了 \(a_i+T-a_{i+1}\),枚举每个 \(i\) 取最小值即可。

注意原始的极差也要统计入答案。

代码

#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;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/809141.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

# 2024-2025-1 学号(2024130) 《计算机基础与程序设计》第二周学习总结

作业信息 |这个作业属于哪个课程|<[2024-2025-1-计算机基础与程序设计]> (https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))| |-- |-- | |这个作业要求在哪里|<[2024-2025-1计算机基础与程序设计第一周作业]>(https://edu.cnblogs.com/campus/besti/2024…

序列化器中拿到request

class UpdateMobileSerializer(serializers.ModelSerializer):old = serializers.CharField(write_only=True, validators=[RegexValidator(r"\d{11}", message="格式错误")])mobile = serializers.CharField(write_only=True, validators=[RegexValidator…

面相快速入门教程4五行与面相

4 五行与面相 现在,你进入了旅程中最重要的部分。在这里,你将学习到这些智慧所依据的原则,然后深入了解五种元素或原型的特质,它们在你的脸上闪耀着光芒。五种不同的元素各有两幅肖像样本,每种元素又各有两章。在第一章中,你将探索该性格的总体概况,了解它在你生活中的广…

0923人工智能教育技术学

任务一 (1)水印的功能: 1.版权保护:水印可以用来标识内容的创建者或所有者,从而防止未经授权的复制或分发。 2.身份验证:水印可以用于验证数字内容的真实性和完整性,确保内容在传输过程中没有被篡改。 3.广告和推广:水印可以作为一种低成本的广告手段,增加品牌曝光度。…

『模拟赛』CSP-S模拟9

『模拟赛记录』CSP-S模拟9Rank 烂,知耻而后勇A. 邻面合并 签。 注意到列数 \(m\le 8\),我们可以直接先搜出每一行可能的“分块”情况,然后转移时枚举上一行的所有状态和这一行的所有状态,根据拼接情况来更新答案,最终答案即为 \(n\) 行所有情况的最小值。 赛时开始打的错解…

VC++ 6.0的安装及使用

1. 安装 双击运行程序vc6_cn_full.exe进行安装如果需要更改安装目录,选择浏览进行安装地址的修改,否则点击下一步程序第一次启动会弹出提示框,可去掉“启动时显示提示”选项框,下一次就不会弹出该提示框2. 一个简单的demo初学者建议选择“一个空程序”去创建控制台程序选择…

2024-2025 1 20241306第二周作业总结

学期2024-2025-1 学号:20241306 《计算机基础与程序设计》第2周学习总结 作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第2周作业)这个作业的目标 学…

网红狗头来深圳了,上图上图

在海雅缤纷城,晚上7点开摆摊,9点结束,10月7日结束。昨天带了变焦xf18-120mm镜头。和75mm1.2f

2024-2025-1 20241407《计算机基础与程序设计》第二周学习总结

这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 [2024-2025-1计算机基础与程序设计第二周作业](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13266)这个作业的目标 数字化 信息安全 *自学教材:计算机科学概论(第七版)第1章…

F5负载均衡系列教程十一【流量负载不均的潜在原因】

F5作为负载均衡设备,主要目的是将流量相对均衡的分发到每台服务器上(如果服务器性能相同),但是某些情况下也可能会产生负载不均的情况,导致负载不均可能的原因主要如下图所示

Visual Studio 2015 社区版安装

下载安装包 链接:https://pan.baidu.com/s/1ebHUp-rUy75-03o5edxHcg 提取码:hs0l --来自百度网盘超级会员V1的分享1、双击安装包2、如图先选自定义,然后选安装路径(英文路径)3、3-安装选项一个就够了,如图4、安装完成