[JOIGST 2024] 相聚 题解
之前把这题搬进了模拟赛,直接把当时写的题解弄过来。
本题有结论:将坐标序列排序后,最终河狸聚成的形态必然形如“将连续的
所以我们可以先将
时间复杂度为
放代码:
#include<bits/stdc++.h>
using namespace std;
int main(){
ios::sync_with_stdio(false);
int n; cin>>n;
vector<int> a(n),f(n);
for(auto &i:a)cin>>i;
sort(a.begin(),a.end());
f[1]=a[1]-a[0],f[2]=a[2]-a[0];
for(int i=3;i<n;i++)
f[i]=min(f[i-2]+a[i]-a[i-1],i>3?f[i-3]+a[i]-a[i-2]:(int)2e9); // 进行 DP
cout<<f[n-1]<<endl;
return 0;
}