售貨員的難題 狀態壓縮動態規劃

2021-08-16 03:29:47 字數 632 閱讀 8881

某鄉有n個村莊(1對於這道題來說,最好的解法應該是狀態壓縮動態規劃,但實際上大部分人寫都tle了兩個點,ac的都是dfs+剪枝做的,速度仍比優化過的動態規劃快不少,但為什麼還要用動態規劃做呢,因為做題不是為了ac,而是為了掌握和鞏固演算法知識。。。

用乙個二進位制數表示當前狀態,例如二進位制數1011表示第1個,第2個,第4個村莊已經到達過了,然後運用位運算的思想寫狀態轉移方程,這題的狀態是f[s][i]表示走過用s表示的村莊後最終到達i點的最優解,那麼狀態轉移方程就是:f[s][i] = min(f[s^(1<

對於f[1<

#include#include#include#define inf 10000000

using namespace std;

int n,a[22][22],f[1048580][22];

int read()//讀入優化

int main()

int main()

}int ans = f[(1<

for(int i=2;i<=n;i++)

ans = min(ans,f[all][i]+a[i][1]);

printf("%d",ans);

return 0;

}

售貨員的難題

售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...

售貨員的難題

售貨員的難題 5000 ms 65535 kb 675 3441 tags 動態規劃 某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村...

售貨員的難題

某鄉有n個村莊 1 n 20 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村,假設商店所在的村莊為 1,他不知道選擇什麼樣的路線才能使所走的路程最短。請你幫他選擇...