比赛 20161223 评测结果 AAAAAAAAAA
题目名称 萌化大革命 最终得分 100
用户昵称 Ostmbh 运行时间 0.113 s
代码语言 C++ 内存使用 8.11 MiB
提交时间 2016-12-23 21:29:29
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int f[1010][1010][2];
struct T{
	int x,y;
}A[1010],B[1010];
int dis(int x1,int yy1,int x2,int y2){
	return (x2-x1)*(x2-x1)+(y2-yy1)*(y2-yy1);
}
int main(){
	freopen("checklist.in","r",stdin);
	freopen("checklist.out","w",stdout);
	int n,m;
	scanf("%d %d",&n,&m);
	memset(f,127/2,sizeof(f));
	for(int i=1;i<=n;i++)
		scanf("%d %d",&A[i].x,&A[i].y);
	for(int i=1;i<=m;i++)
		scanf("%d %d",&B[i].x,&B[i].y);
	f[1][0][0]=0;
	for(int i=1;i<=n;i++){
		for(int j=0;j<=m;j++){
	    	if(i==1&&j==0)
				continue;
	    	f[i][j][0]=min(f[i-1][j][0]+dis(A[i].x,A[i].y,A[i-1].x,A[i-1].y),f[i-1][j][1]+dis(A[i].x,A[i].y,B[j].x,B[j].y));
	    	if(j!=0)
				f[i][j][1]=min(f[i][j-1][0]+dis(A[i].x,A[i].y,B[j].x,B[j].y),f[i][j-1][1]+dis(B[j-1].x,B[j-1].y,B[j].x,B[j].y));
	    }
	}
	printf("%d\n",f[n][m][0]);
return 0;
}