WA三个点求助
  • 板块P1433 吃奶酪
  • 楼主LYY_yyyy
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/9/11 18:34
  • 上次更新2023/10/27 11:58:17
查看原帖
WA三个点求助
466451
LYY_yyyy楼主2022/9/11 18:34

WA on #5 #12 #13

#include<bits/stdc++.h>
using namespace std;
int n;
const int N=1<<16;
double f[17][N];
double x[17],y[17];
int ccc[17][N];
double dis(double x1,double y1,double x2,double y2)
{
	return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
void dp()
{
	for(int i=1;i<(1<<n);i++)
	{
		for(int j=1;j<=n;j++)
		{
			if(i&(1<<(j-1))==0) continue;
			if(i==(1<<(j-1))) 
			{
				f[j][i]=dis(0,0,x[j],y[j]);
				continue;
			}
			for(int z=1;z<=n;z++)
			{
				if((i&(1<<(z-1))==0)||(z==j)) continue;
				f[j][i]=min(f[j][i],f[z][i-(1<<(j-1))]+dis(x[j],y[j],x[z],y[z]));
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++) cin>>x[i]>>y[i];
	memset(f,127,sizeof(f));	
	double ans=f[1][1];
	dp();
	for(int i=1;i<=n;i++) ans=min(ans,f[i][(1<<n)-1]);
	printf("%.2lf",ans);
	return 0;
	
}

2022/9/11 18:34
加载中...