题解:P10967 [IOI2000] 邮局(原始版)
思路
首先将坐标排序。
定义
转化式易得
则本题的难点就为求
基本的数学知识,若村庄数为奇数,放中位数处距离和最小。若村庄为偶数,放中间两个村庄之间任意一处均可。
于是就得到了一个
#include<bits/stdc++.h>
using namespace std;
const int MAXN=3010,N=310;
int V,P,X[MAXN],dp[MAXN][N];
int f(int l,int r) {
int mid=l+r>>1,ans=0;
for(int i=l;i<mid;i++) ans+=X[mid]-X[i];
for(int i=mid+1;i<=r;i++) ans+=X[i]-X[mid];
return ans;
}
int main() {
cin>>V>>P;
for(int i=1;i<=V;i++) cin>>X[i];
sort(X+1,X+V+1);
memset(dp,0x3f,sizeof(dp));
dp[0][0]=0;
for(int j=1;j<=P;j++) {
for(int i=1;i<=V;i++) {
for(int k=0;k<i;k++) {
dp[i][j]=min(dp[k][j-1]+f(k+1,i),dp[i][j]);
}
}
}
cout<<dp[V][P]<<endl;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App