某鄉有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,他不知道選擇什麼樣的路線才能使所走的路程最短。請你幫他選擇...