记录编号 231485 评测结果 AAAAA
题目名称 [Tyvj国庆欢乐赛] 武器分配 最终得分 100
用户昵称 GravatarMagic_Sheep 是否通过 通过
代码语言 C++ 运行时间 0.065 s
提交时间 2016-02-26 20:29:14 内存使用 7.95 MiB
显示代码纯文本
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
long long a[100],b[100],f[100][100][100];
int main()
{
	freopen("weapon.in","r",stdin);
	freopen("weapon.out","w",stdout);
	int n,a1,b1;
	scanf("%d%d%d",&n,&a1,&b1);
	for(int i=1;i<=a1;i++)
	{
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=b1;i++)
	{
		scanf("%d",&b[i]);
	}
	memset(f,0x7f7f7f,sizeof(f));
	//排序;听说会快一点; 
	sort(a+1,a+a1+1);
	sort(b+1,b+b1+1);
	for(int i=0;i<=a1;i++) f[0][i][0]=0;//初始化; 
	for(int j=0;j<=b1;j++) f[0][0][j]=0;//划分状态前k个人在前i件机枪和前j件铠甲上选; 
	for(int k=1;k<=n;k++)
	{
		for(int i=1;i<=a1;i++)
		{
			
			for(int j=1;j<=b1;j++)
			{
				f[k][i][j]=min(f[k][i-1][j],f[k][i][j-1]);//不选; 
				f[k][i][j]=min(f[k-1][i-1][j-1]+(a[i]-b[j])*(a[i]-b[j]),f[k][i][j]);//选; 
			}
		}
	}
	long long minn=0x3f3f3f; 
	for(int i=0;i<=a1;i++)
	{
		for(int j=0;j<=b1;j++)
		{
			minn=min(f[n][i][j],minn);
					//	cout<<minn<<" ";
		}
		//cout<<endl;
	}
	cout<<minn<<endl;
	return 0;
}//BY魔术羊