社区讨论

记忆化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 条回复,欢迎继续交流。

正在加载回复...