社区讨论
记忆化70pts求调
P1433吃奶酪参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mdo7jz8s
- 此快照首次捕获于
- 2025/07/29 15:20 7 个月前
- 此快照最后确认于
- 2025/11/04 03:32 4 个月前
WA on #1 #5 #9 #12 #13
CPP#include<bits/stdc++.h>
using namespace std;
struct node{
double x,y;
} g[50];
double f[50][50];
int n;
int mast[100000][23];
double ans=2147483647;
double d(double x1,double y1,double x2,double y2){
return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
void dfs(int x,double dis,int mask){
mask+=(1<<x);
if(mask==(1<<(n+1))-1){
ans=min(ans,dis);
return;
}
if(dis>=mast[mask][x])return;
mast[mask][x]=dis;
for(int i=1;i<=n;i++){
if((mask>>i)&1){
continue;
}
dfs(i,dis+f[x][i],mask);
}
}
int main() {
for(int i=0;i<99999;i++){
for(int j=0;j<16;j++)
mast[i][j]=2147483646;
}
cin>>n;
g[0].x=0;g[0].y=0;
for(int i=1;i<=n;i++){
cin>>g[i].x>>g[i].y;
}
for(int i=0;i<=n;i++){
for(int j=1;j<=n;j++){
f[i][j]=d(g[i].x,g[i].y,g[j].x,g[j].y);
}
}
dfs(0,0,0);
printf("%.2lf",ans);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...