Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
152363 | 吴悠 | 书架问题2 | C++ | 通过 | 100 | 0 MS | 296 KB | 682 | 2024-06-23 12:01:12 |
#include<iostream> #include<algorithm> #include<cstring> #include<cmath> using namespace std; int dp[101][101]; struct Book{ int x; int y; }a[101]; bool cmp(Book A,Book B){ return A.x<B.x; } int main(){ int n,k; cin>>n>>k; for(int i=1;i<=n;i++){ cin>>a[i].x>>a[i].y; } sort(a+1,a+n+1,cmp); memset(dp,0x3f,sizeof(dp)); dp[0][0]=0; for(int i=1;i<=n;i++){ dp[i][1]=0; } for(int i=1;i<=n;i++){ for(int j=1;j<=min(i,n-k);j++){ for(int k=1;k<i;k++){ dp[i][j]=min(dp[i][j],dp[k][j-1]+abs(a[i].y-a[k].y)); } } } int ans=0x3f3f3f3f; for(int i=n-k;i<=n;i++){ ans=min(ans,dp[i][n-k]); } cout<<ans<<endl; return 0; }