记录编号 |
584243 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[POI 1999] 地图着色 |
最终得分 |
100 |
用户昵称 |
小金 |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.137 s |
提交时间 |
2023-11-03 21:50:42 |
内存使用 |
1.83 MiB |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int a[3010],n,m;
long long f[3010][15],q[3010];
long long qz(int l,int r)
{
long long ans,p;
p=(l+r)/2;
ans=(p-l)*a[p]-q[p-1]+q[l-1]+q[r]-q[p]-(r-p)*a[p];
return ans;
}
int main()
{
freopen("map.in","r",stdin);
freopen("map.out","w",stdout);
memset(f,0x3f,sizeof(f));
cin>>n>>m;
q[0]=0;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
q[i]=q[i-1]+a[i];
}
for(int i=1;i<=n;i++)
{
f[i][1]=qz(1,i);
}
for(int x=2;x<=m;x++)
{
for(int i=1;i<=n;i++)
{
for(int k=1;k<i;k++)
{
f[i][x]=min(f[i][x],f[k][x-1]+qz(k+1,i));
}
}
}
cout<<f[n][m];
return 0;
}