Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
149060 | 唐钧 | 书架问题2 | C++ | 解答错误 | 0 | 0 MS | 604 KB | 635 | 2024-05-25 15:51:02 |
#include <bits/stdc++.h> using namespace std; int ans,n,k,f[1097][1097]; struct book { int high,wide; }a[100097]; bool cmp(book x,book y) { return x.high<y.high; } int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].high>>a[i].wide; } sort(a+1,a+1+n,cmp); for(int i=1;i<=n;i++) { for(int j=2;j<=min(i,n-k);j++) { f[i][j]=0x3f3f3f3f; for(int x=j-1;x<i;x++) { f[i][j]=min(f[i][j],f[x][j-1]+abs(a[x].wide-a[i].high)); } } } ans=f[n][n-k]; for(int i=n-1;i>=n-k;i--) { ans=min(ans,f[i][n-k]); } cout<<ans; return 0; }