社区讨论

50分求调

P1433吃奶酪参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@miohyduf
此快照首次捕获于
2025/12/02 19:30
3 个月前
此快照最后确认于
2025/12/04 16:50
3 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
double dp[1000][1000];
double x[20];
double y[20];
double length_ch(double  a,double b,double c,double d){
    return sqrt((a-b)*(a-b)+(c-d)*(c-d));
}
int n;
int main() {
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>x[i]>>y[i];
    }
    memset(dp,127,sizeof(dp));  
	for(int s=1;s<(1<<n);s++) 
        for(int i=1;i<=n;i++)
        {
            if((s&(1<<(i-1)))==0){
                continue;
            }
            if(s==(1<<(i-1))) {
                dp[i][s]=0;
                continue;
            }
            for(int j=1;j<=n;j++)
            {
                if((s&(1<<(j-1)))==0||i==j){
                	continue;
				}
                dp[i][s] = min(dp[i][s],dp[j][s-(1<<(i-1))]+length_ch(x[i],x[j],y[i],y[j]));
            }
        }
        double ans=-1;
        for(int i=1;i<=n;i++){ 
            double s=dp[i][(1<<n)-1]+length_ch(x[i],x[0],y[i],y[0]);
            if(ans==-1||ans>s) ans=s;
        }
        printf("%.2lf\n",ans); 
    return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...