玄学问题求助(与本题解法无关)
查看原帖
玄学问题求助(与本题解法无关)
389425
__ex楼主2023/6/29 20:19

只放出错的地方罢

memset(dp,0x3f,sizeof(dp));
    for(int i=0;i<n;i++)
        dp[1<<i][0]=0;
    for(int S=1;S<1<<n;S++)
        for(int s=S-1;s;s=(s-1)&S){
            if((sub[s]|S)!=sub[s])continue;
            int sum=0,ss=S^s;
            for(int i=0;i<n;i++){
                if(!(ss&1<<i))continue;
                int minn=inf;
                for(int j=0;j<n;j++){
                    if(!(s&1<<j))continue;
                    minn=min(minn,dis[i][j]);
                }
                sum+=minn;
            }
            for(int i=1;i<n;i++)
                if(dp[s][i-1]<inf)
                    dp[S][i]=min(dp[S][i],dp[s][i-1]+sum*i);
        }
    int ans=inf;
    for(int i=0;i<n;i++)
        ans=min(ans,dp[(1<<n)-1][i]);
    printf("%d\n",ans);

inf=0x3f3f3f3f 时85pts

inf=0x3f3f3f 时100pts

2023/6/29 20:19
加载中...