题解:P13728 [GCPC 2024] Musical Mending

分析问题:

调整后第 个按键的音高应该是 ,其中 是第一个按键的音高(可变量)。

计算每个按键的调整量:

问题转化为找到一个 ,使所有 的和最小,其中

数学上,这个最优 就是数组 的中位数。

代码

#include<bits/stdc++.h>
#define ri register int
#define int long long
#define run_fast ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr)
using namespace std;
signed main() {
	run_fast;
	int n;
	cin >> n;
	vector<int> t(n);
	for (ri i = 0; i < n; ++i) cin >> t[i];
	vector<int> a(n);
	for (ri i = 0; i < n; ++i) a[i] = t[i] - i;
	sort(a.begin(), a.end());
	int med = a[n / 2], ans = 0;
	for (ri num : a) ans += abs(num - med);
	cout << ans << endl;
	return 0;
}
//var code = "d0b6c740-4f6c-4929-a346-3fcbfb2a5437"
posted @ 2025-08-18 22:35  liketaem  阅读(2)  评论(0)    收藏  举报  来源