有L个伞兵空降到n*m的地图中,告诉你伞兵的坐标,你可以在任意位置设立一个激光炮,激光炮可以花费r[i] 杀死这一行的伞兵,花费c[i]杀死这一列的伞兵,最后的
总花费是每次花费的乘积。( 其实log(a)+log(b)+...+log(z)=log(a*b*...*z),对数可以将乘法变成加法 )。
对于这样的行列模型,很容易想到二分图,将行列看成二分图的X和Y集,从源点到X集建边,容量为log(r[i]),Y集到汇点建边,容量为log(c[i]),根据伞兵的左边从X集到Y集建边,容量为INF(保证不选到)。这样建图后,原问题就变成了求最小割。
最后再用exp将答案转回来就行了。
#include
#include
#include
#include
#include
#include
#include