之前也是看的解題報告寫的,所以寫的不好。現在回頭看看,其實很簡單。
這篇我只作為筆記使用
14多校賽第一場題解
#include #include #include #include #include #include #include #include using namespace std;
#define ll int
#define n 220
#define m 12345
#define inf (1<<29)
//注意 點標必須是 [0 - 匯點]
//雙向邊,注意re
struct edgeedge[m*2];
ll head[n], edgenum;
void add(ll u,ll v,ll cap,ll cost);
edge[edgenum]=e;
head[u]=edgenum++;
edge e2=; //這裡的cap若是單向邊要為0
edge[edgenum]=e2;
head[v]=edgenum++;
} ll d[n], p[n], a[n];
bool inq[n];
bool bellmanford(ll s, ll t, ll &flow, ll &cost)
} }
if(d[t] == inf) return false;
flow += a[t];
cost += d[t] * a[t];
ll u = t;
while(u != s)
return true;
} ll flow;
ll mincost(ll s,ll t)
void init()
ll n, m, k;
ll hash1(ll x, ll y)
ll hash2(ll x, ll y)
char s[20];
ll mp[20][20];
int main()
printf("case %d : ", cas++);
init();
ll i, j, g;
ll from = 0, to = hash2(n,m)+10, jiji = to-2;
for(i = 1; i <= n; i++)
for(g = i+1; g <= n; g++)
} }
add(from, jiji, k, 0);
ll ans = - mincost(from, to);
if(flow != n*m)
puts("-1");
else
cout<< ans << endl;
} return 0;
}
HDU 4862 JUMP 最小費用最大流
2014 多校的b題,由於我不怎麼搞圖論,當時碰到這個題目,我怎麼想都沒往網路流方面弄,不過網路流真的是個好東西,對於狀態多變,無法用動規或者資料結構來很好表示的時候,非常有用 這個題目要求每個點一定要訪問到,並且每次訪問的是沒訪問過的點,跳躍的方向為向右或者向下。建圖的時候,分成二分圖,從乙個超級...
HDU4862 Jump(最大流量最大費用流)
題意 有n m的格仔,每乙個格仔包含乙個數字,0 9。你初始的能量為0,你可以玩k次,每乙個你可以選擇你現在的格仔的正下方或者正右方的任意乙個格仔跳,但必須是之前沒有跳過的格仔。每玩一次你都可以跳任意次。每跳一次,從 x1,y1 到 x2,y2 你將花費 x1 x2 y1 y2 1的能量,如果起止格...
HDU4862 Jump(放大邊權的費用流)
題目大概給乙個n m的格仔,每個格仔有乙個一位數字,格仔不能重複經過,最多進行這樣的k次行走 每一次選擇任意乙個格仔出發,可以從當前格仔走到下面或右邊格仔,花費能量是曼哈頓距離 1,而如果起點和終點格仔數字一樣那就能獲得那個數字的能量。問能不能走過所有的格仔,如果能算出 最大的最終能量。太弱了。官方...