深海資源考察探險隊的潛艇將到達深海的海底進行科學考察。
潛艇內有多個深海機械人。潛艇到達深海海底後,深海機械人將離開潛艇向預定目標移動。
深海機械人在移動中還必須沿途採集海底生物標本。沿途生物標本由最先遇到它的深海機械人完成採集。
每條預定路徑上的生物標本的價值是已知的,而且生物標本只能被採集一次。
本題限定深海機械人只能從其出發位置沿著向北或向東的方向移動,而且多個深海機械人可以在同一時間佔據同一位置。
用乙個 p\times qp×q 網格表示深海機械人的可移動位置。西南角的座標為 (0,0)(0,0) ,東北角的座標為 (q,p)(q,p) 。
給定每個深海機械人的出發位置和目標位置,以及每條網格邊上生物標本的價值。
計算深海機械人的最優移動方案, 使深海機械人到達目的地後,採集到的生物標本的總價值最高。
輸入格式:
檔案的第 11 行為深海機械人的出發位置數 aa ,和目的地數 bb 。
第 22 行為 pp 和 qq 的值。
接下來的 p+1p+1 行,每行有 qq 個正整數,表示向東移動路徑上生物標本的價值,行資料依從南到北方向排列。
再接下來的 q+1q+1 行,每行有 pp 個正整數,表示向北移動路徑上生物標本的價值,行資料依從西到東方向排列。
接下來的 aa 行,每行有 33 個正整數 k,x,yk,x,y ,表示有 kk 個深海機械人從 (x,y)(x,y) 位置座標出發。
再接下來的 bb 行,每行有 33 個正整數 r,x,yr,x,y ,表示有 rr 個深海機械人可選擇 (x,y)(x,y) 位置座標作為目的地。
a行和b行輸入時橫縱座標要反過來
輸出格式:
輸出採集到的生物標本的最高總價值.
輸入樣例#1: 複製
1 1輸出樣例#1: 複製2 21 2
3 45 6
7 28 10
9 32 0 0
2 2 2
421\leq p,q\leq151≤p,q≤15
1\leq a\leq 41≤a≤4
1\leq b\leq 61≤b≤6
費用流應該比較顯然
就是讀入比較坑爹
需要把整張圖反過來
從s向每個機械人開始的地方連容量為機械人數量,費用為0的邊
從每個機械人向t連容量為數量,費用為0的邊
相鄰格仔之間連一條容量為inf,費用為0的邊,再連一條容量為1,費用為讀入的邊
#include#include#include
#include
#define addedge(x,y,z,f) add_edge(x,y,z,f),add_edge(y,x,-z,0)
using
namespace
std;
const
int inf=1e8+10
;const
int maxn=1001+10
;int
n,m,s,t;
intc[maxn][maxn];
struct
node
edge[maxn];
int head[maxn],num=2
;inline
void add_edge(int x,int y,int z,int
f)int
dis[maxn],vis[maxn],pre[maxn];
bool
spfa()}}
return dis[t]
}int
f()void
mcmf()
intbelong[maxn][maxn];
intmain()
}for(int j=1;j<=q;j++)
}for(int i=1;i<=a;i++)
for(int i=1;i<=b;i++)
mcmf();
return0;
}
P4012 深海機械人問題
深海資源考察探險隊的潛艇將到達深海的海底進行科學考察。潛艇內有多個深海機械人。潛艇到達深海海底後,深海機械人將離開潛艇向預定目標移動。深海機械人在移動中還必須沿途採集海底生物標本。沿途生物標本由最先遇到它的深海機械人完成採集。每條預定路徑上的生物標本的價值是已知的,而且生物標本只能被採集一次。本題限...
luogu P4012 深海機械人問題
費用流問題,每個樣本選一次,就連一條capacity為1,權為給定的值,因為可以重複走,再連capacity為無窮,權為0的邊,再一次連線給定的出點和匯點即可 includeusing namespace std define lowbit x x x typedef long long ll co...
LuoguP4012 深海機械人問題 費用流
深海資源考察探險隊的潛艇將到達深海的海底進行科學考察。潛艇內有多個深海機械人。潛艇到達深海海底後,深海機械人將離開潛艇向預定目標移動。深海機械人在移動中還必須沿途採集海底生物標本。沿途生物標本由最先遇到它的深海機械人完成採集。每條預定路徑上的生物標本的價值是已知的,而且生物標本只能被採集一次。本題限...