- [P1433 吃奶酪](https://www.luogu.com.cn/problem/P1433)
换一种类型,这次求长度最小值,(n<15)接着状压
题目:房间里放着 nn 块奶酪。一只小老鼠要把它们都吃掉,问至少要跑多少距离?老鼠一开始在 (0,0)(0,0) 点处。
梳理状态:1吃了几个,2吃了哪几个 (dp[i个][吃完第i个是什么状态])
写出递推式
dp[j][i]=min(dp[j][i],dp[p][i-(1<<(j-1))]+a[p][j]);
//当前距离 p:上一个是哪个点 i-(1<<(j-1)):上一个状态 a[p][j]距离
思路:先求出任意两点间距离,按照状态选择结束启示两点进行遍历。
for(int i=1;i<(1<<n);i++){
for(int j=1;j<=n;j++){
if(i&(1<<(j-1))==0)continue;
for(int p&