洛谷 P1171 售貨員的難題 狀壓dp

2021-08-09 22:18:19 字數 785 閱讀 3958

某鄉有n個村莊(1

輸入格式:

村莊數n和各村之間的路程(均是整數)。

輸出格式:

最短的路程。

輸入樣例#1:

複製

3

0 2 1

1 0 2

2 1 0

輸出樣例#1:

複製

3

輸入解釋 3

0 2 1

1 0 2

2 1 0

這道題卡常卡的太極限了= =

#include#include#include#include#define ll long long int

#define rep(i,n) for (int i = 1; i <= (n); i++)

#define min(a,b) (a) < (b) ? (a):(b)

using namespace std;

const int maxn = 20,maxm = 1 << 20,inf = 1000000000;

inline int read()

while (c >= 48 && c <= 57)

return out * flag;

}int g[maxn][maxn],f[maxm][maxn],n;

int main()}}

} }cout<

洛谷P1171 售貨員的難題 狀壓DP

題目描述 某鄉有n個村莊 1 201 120 有乙個售貨員,他要到各個村莊去售貨,各村莊之間的路程s 0 s 1000 s 0s 0 s 10 00 是已知的,且a村到b村與b村到a村的路大多不同。為了提高效率,他從商店出發到每個村莊一次,然後返回商店所在的村,假設商店所在的村莊為1,他不知道選擇什...

洛谷P1171 售貨員的難題(狀壓DP)

題目描述 某鄉有n個村莊 1分析 n很小,而且哪個村去過與沒去過都可以用二進位制1,0表示,於是容易想到狀壓dp。接下來分析狀態。首先有2n種方案,所有dp狀態中要有一維 1 include include includeusing namespace std typedef long long l...

洛谷 P1171 售貨員的難題(狀壓dp)

用乙個數i的二進位制表示某一位的村莊是否已經去過,dp i j 表示當前狀態i,這一次去的村莊是j的最短路程。然後就列舉i j k k表示下乙個去的村莊 然後在if判斷是否符合條件後,用dp i j 更新dp i 1 k 1 k 注意邊界的處理。1 include2 using namespace ...