社区讨论
90TLE求解,急速!!!!!
P1433吃奶酪参与者 3已保存回复 5
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 5 条
- 当前快照
- 1 份
- 快照标识符
- @mm8vbls2
- 此快照首次捕获于
- 2026/03/02 15:39 上周
- 此快照最后确认于
- 2026/03/05 17:50 5 天前
代码1:
CPP#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
double x[16],y[16];
double ans;
int a[18];
bool v[18];
double cal(int i,int j){
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
void dfs(int i,double d){
if(d>=ans){
return;
}
if(i>n){
ans=min(ans,d);
return;
}
for(int j=1;j<=n;j++){
if(v[j]==false){
a[i]=j;
v[j]=true;
dfs(i+1,d+cal(a[i-1],j));
v[j]=false;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);//等价于cin.tie(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
ans=1e18;
dfs(1,0);
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
代码2:
CPP#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
double x[16],y[16];
double ans;
int a[18];
bool v[18];
double cal(int i,int j){
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
void dfs(int i,double d){
if(i>n){
ans=min(ans,d);
return;
}
for(int j=1;j<=n;j++){
if(v[j]==false){
a[i]=j;
v[j]=true;
dfs(i+1,d+cal(a[i-1],j));
v[j]=false;
}
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);//等价于cin.tie(false);
cin>>n;
for(int i=1;i<=n;i++){
cin>>x[i]>>y[i];
}
ans=1e18;
dfs(1,0);
cout<<fixed<<setprecision(2)<<ans;
return 0;
}
回复
共 5 条回复,欢迎继续交流。
正在加载回复...