1 条题解
-
0
自动搬运
来自洛谷,原作者为

Otomachi_Una_
We will never forget those days, thanks for everything.搬运于
2025-08-24 21:36:07,当前版本为作者最后更新于2021-08-29 22:07:24,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
观察发现,假设要选四根木棒长度分别为 。
显然把 分一起, 分一起比其他方法优。
于是,我们把木棍长度从小到大排。
假设 表示前 条木棒中,分给了 人最小矛盾指数,可以得到:
$$f_{i,j}=\min(f_{i-1,j},f_{i-2,j-1}+(a_i-a_{i-1})^2) $$时间复杂度 。
参考代码
#include<iostream> #include<algorithm> using namespace std; #define ll long long const int MAXN=505; int n,m; ll a[4*MAXN]; ll f[4*MAXN][MAXN]; int main(){ for(int i=1;i<MAXN;i++) f[0][i]=f[1][i]=8e18; cin>>m>>n; for(int i=1;i<=m;i++) cin>>a[i]; sort(a+1,a+m+1); for(int i=2;i<=m;i++){ for(int j=1;j<=n;j++) f[i][j]=min(f[i-1][j],f[i-2][j-1]+(a[i]-a[i-1])*(a[i]-a[i-1])); f[i][0]=0; } cout<<f[m][n]; return 0; }
- 1
信息
- ID
- 1255
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 3
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 上传者