记录编号 160136 评测结果 AAAAAAAAAAAAAAA
题目名称 马拉松2 最终得分 100
用户昵称 Gravatarfyb 是否通过 通过
代码语言 C++ 运行时间 0.200 s
提交时间 2015-04-24 08:10:37 内存使用 1.25 MiB
显示代码纯文本
#include <stdio.h>

#define NMAX 500
#define KMAX NMAX
#define VERY_LARGE 10000000

int y[NMAX+1],x[NMAX+1];
int d[NMAX+1][KMAX+1];

int ab(int a){return a<0?-a:a;}
int dis(int ia,int ib){return ab(y[ia]-y[ib])+ab(x[ia]-x[ib]);}

int main(){
	int n,k;
	int tmp,mi;
	int i,j,a;

	freopen("marathonb.in","r",stdin);
	freopen("marathonb.out","w",stdout);

	scanf("%d%d",&n,&k);
	getchar();
	for(i=1;i<=n;i++){
		scanf("%d%d",x+i,y+i);
		getchar();
	}

	for(i=2;i<=n;i++)
		for(j=0;j<=k;j++){
			mi=VERY_LARGE;
			tmp=0;
			for(a=0;a<=k&&a<i-1&&a<=j;a++){
				tmp=d[i-a-1][j-a]+dis(i-a-1,i);
				if(tmp<mi)mi=tmp;
			}
			d[i][j]=mi;
		}

/*
	for(i=1;i<=n;i++){
		for(j=0;j<=k;j++)
			printf("%d ",d[i][j]);
		putchar('\n');
	}
*/

	printf("%d",d[n][k]);
	return 0;
}