深海機械人問題 網路流24題 最大流最小費用

2021-09-14 00:49:39 字數 1380 閱讀 3111

這道題的建邊倒是不難,但是要想到的是要去建乙個從一點到另一點乙個流量為inf但是費用為0的邊,而有價值的邊的時候,我們建立的邊就是流量為1,並且費用為負價值的邊。

#include #include #include #include #include #include #include #include #include #include #include #include #define lowbit(x) ( x&(-x) )

#define pi 3.141592653589793

#define e 2.718281828459045

#define inf 0x3f3f3f3f

#define half (l + r)>>1

#define lsn rt<<1

#define rsn rt<<1|1

#define lson lsn, l, mid

#define rson rsn, mid+1, r

#define ql lson, ql, qr

#define qr rson, ql, qr

#define myself rt, l, r

using namespace std;

typedef unsigned long long ull;

typedef long long ll;

const int s = 0, maxn = 407, maxe = 4e3 + 7;

int a, b, p, q, head[maxn], cnt, t, pre[maxn], flow[maxn], dist[maxn];

bool inque[maxn];

queueque;

struct eddge

}edge[maxe];

inline void addeddge(int u, int v, int flow, int cost)

inline void _add(int u, int v, int flow, int cost)

bool spfa()}}

}return pre[t] ^ -1;

}int ek()

ans += dist[t] * flow[t];

}return -ans;

}inline void init()

int main()

}for(int i=0, e1, now_id, to_id; i<=q; i++)

}for(int i=1, k, x, y; i<=a; i++)

for(int i=1, k, x, y; i<=b; i++)

printf("%d\n", ek());

return 0;

}

網路流24題 深海機械人問題

網路流24題大多需要spj,所以需要乙個有spj的oj,本系列 均在www.oj.swust.edu.cn測試通過 這道題其實和數字梯形的第三個規律挺像的 點和路徑均可重合 唯一的差別就是這道題的路徑權值只能計算一次,那怎麼辦呢,其實不難,我們只要將容量為inf的邊的權值修改為0,在此基礎上再加一條...

深海機械人問題 網路流24題

思路 和方格取數差不多的一道題 只是輸入有點噁心 然而他好像提示了怎麼輸出 之後就是建圖標準最大費用最大流了 不知道為什麼spfa的最大流t了乙個點 難道說資料這麼喪心病狂嗎 zkw的話倒是50ms就跑完了 code 1 include 2 define dbg x cout x x endl34 ...

網路流24題 深海機械人(最大費用流)

深海機械人 題意 給定帶一次性邊權網格與若干機械人的起終點,規定起終點必須被機械人經過的次數,求所有機械人能夠得到的最大邊權和.最大費用流,源點向起點連邊,終點向匯點連邊,方格上的點向相鄰點連流量為1費用為val的邊.除此之外,對於題目要求,多個機械人可以在同一時間佔據同一位置 方格上的點還要向相鄰...