P1103 书本整理
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
int hg[300][300];
struct cnt
{
int h,g;
}add[3000];
bool cmp(cnt a,cnt b)
{
if(a.h>b.h)
return 0;
}
int main()
{
memset(hg,0x3f,sizeof hg);
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
{
scanf("%d%d",&add[i].h,&add[i].g);
hg[1][i]=0;
}
sort(add+1,add+1+n,cmp);
for(int i=1;i<=n-k;i++)
{
for(int j=1;j<=n;j++)
{
for(int k=j-1;k>=1;k--)
{
hg[i][j]=min(hg[i-1][k]+abs(add[j].g-add[k].g),hg[i][j]);
}
}
}
long long sum=1e9;
for(int i=1;i<=n;i++)
{
if(sum>hg[n-k][i])
sum=hg[n-k][i];
}
printf("%lld",sum);
return 0;
}