HDU 5988 費用流 16青島銀牌題?

2022-07-15 23:15:12 字數 1014 閱讀 7508

費用不再是相加,而是以概率形式出現,需要相乘

取對數可以將乘法變為加法

然後就是裸的費用流了

注意精度問題,不然會t。。。

#include #include #include #include #include #include #define inf 0x3f3f3f3f

#define eps 1e-8

using namespace std;

typedef long long ll;

typedef pairp;

const int maxv = 1e2 + 10;

int v;

struct edge

};double h[maxv];

double dist[maxv];

int prevv[maxv], preve[maxv];

vectorg[maxv];

void add_edge(int from, int to, int cap, double cost)

double min_cost_flow(int s, int t, int f)

}} for (int v = 0; v < v; v++) h[v] += dist[v];

int d = f;

for (int v = t; v != s; v = prevv[v])

res += d * h[t];

f -= d;

for (int v = t; v != s; v = prevv[v])

} return res;

}int main() else if (u < v)

} for (int i = 0; i < m; i++)

} double ans = min_cost_flow(s, t, f);

printf("%.2lf\n", 1.000 - pow(2, -ans));

} return 0;

}

hdu 4411 最小費用流

思路 這道題建圖比較難想,首先是建立超級源點和超級匯點,那麼由於有k個警察,於是vs與0連邊,容量為k,費用為0,因為這k個警察不一定都出去,也就是不一定是最大流,於是0和vt連邊,容量為k,費用為0。然後就是拆點建圖了 1 0到i連邊,容量為1,費用0到i的最短路,表示去抓城市i的小偷。2 從i到...

hdu 4411 最小費用流

思路 這道題建圖比較難想,首先是建立超級源點和超級匯點,那麼由於有k個警察,於是vs與0連邊,容量為k,費用為0,因為這k個警察不一定都出去,也就是不一定是最大流,於是0和vt連邊,容量為k,費用為0。然後就是拆點建圖了 1 0到i連邊,容量為1,費用0到i的最短路,表示去抓城市i的小偷。2 從i到...

HDU 2135 最小費用流

1 include2 include3 include4 include 5 define nmax 1002 6 define mmax 10005 7 define inf 99999999 8using namespace std 9int head nmax qu nmax dis nmax...