題目描述 description
有乙個送外賣的,他手上有n
份訂單,他要把
n份東西,分別送達
n個不同的客戶的手上。
n個不同的客戶分別在
1~n個編號的城市中。送外賣的從
0號城市出發,然後
n個城市都要走一次(乙個城市可以走多次),最後還要回到
0點(他的單位),請問最短時間是多少。現在已知任意兩個城市的直接通路的時間。
輸入描述 input description
輸入檔案meal.in
的第一行乙個正整數n (
1<=n<=15
)接下來是乙個(n+1
)*(n+1)
的矩陣,矩陣中的數均為不超過
10000
的正整數。矩陣的i行
j列表示第
i-1號城市和
j-1號城市之間直接通路的時間。當然城市
a到城市
b的直接通路時間和城市
b到城市
a的直接通路時間不一定相同,也就是說道路都是單向的。
輸出描述 output description
輸出檔案meal.out
僅有乙個正整數表示最少花費的時間
樣例輸入 sample input
0 1 10 10
1 0 1 2
10 1 0 10
10 2 10 0
樣例輸出 sample output
資料範圍及提示 data size & hint
50%的資料
1 <= n <= 10
100%的資料1 <= n <= 15
和售貨員的難題幾乎沒區別,就是首先floyd了一下。
**:
#include#include#include
#include
#include
#define ll long long
#define il inline
#define db double
#define replace(a , b) (a ^ (1 << b-1))
#define get(a , b) ((a >> b-1) & 1)
#define min(a , b) ((a) < (b) ? (a) : (b))
using
namespace
std;
il int
gi()
while(ch>='
0'&&ch<='9'
)
return x*y;
}int n,m,f[1
<<21][21],r[21][21],ans=2e9,s;
intmain()}}
for(int i=2;i<=n;i++)
ans=min(ans,f[m][i]+r[i][1
]); printf(
"%d\n
",ans);
return0;
}
Codevs 2800 送外賣 狀壓DP
2800 送外賣 時間限制 2 s 空間限制 256000 kb 題目等級 鑽石 diamond 題目描述 description 有乙個送外賣的,他手上有n份訂單,他要把n份東西,分別送達n個不同的客戶的手上。n個不同的客戶分別在1 n個編號的城市中。送外賣的從0號城市出發,然後n個城市都要走一次...
CodeVS2800 送外賣 最短路 狀壓DP
首先求出各點之間的最短路,floyed即可,注意是0 n。然後考慮狀壓,f i j 表示狀態為i時訪問j點時的最短路和,1表示訪問,0表示未訪問,然後第j個點所在的位置就是 1 f i j min f i j f i 1 p表示列舉每個點,i 1 1 include 2 include 3 incl...
(狀壓dp)codevs2800 送外賣
時間限制 2 s 空間限制 256000 kb 題目等級 鑽石 diamond 題解 檢視執行結果 回到問題 總耗時 201 ms 0 0 資料通過測試.最近的錯誤點資訊 執行結果 測試點 1.in結果 ac 記憶體使用量 256kb 時間使用量 1ms 測試點 10.in結果 ac 記憶體使用量 ...