RT:最后更新dp数组的时候,书上代码和自己写的顺序不一样 会有影响吗??
书上代码:
for (int j=1;j<n;j++)
for (int i=1;i<=TOT;i++)
for (int k=i;k;k=(k-1)&i)
dp[i][j]=min(dp[i][j],dp[i^k][j-1]+dis[i^k][k]*j);
本人代码:
for (int i=1;i<=TOT;i++)
for (int j=1;j<n;j++)
for (int k=i;k;k=(k-1)&i)
dp[i][j]=min(dp[i][j],dp[i^k][j-1]+dis[i^k][k]*j);
//参考扶苏的题解,dp数组表示已选点集为i,树高为j的最小花费,dis则是把k这个集合加入到i^k这个集合的最小距离,乘以树高(j)即为贡献