摘要: 题意:一个矩阵,已知其中一些格会降落伞兵,每行每列都有一个武器,可以一次性消灭该行或该列的全部伞兵,每个武器对应不同的价格,若使用多个武器则总价是各个武器价钱的乘积,问消灭所有伞兵最少要多少钱。分析:最小权覆盖集。难点在于武器总价不是加和而是乘积,那么我们需要把各个单价转化为以e为底的对数,这样再求对数加和的时候其实各个原单价之间是相乘的关系。建立二分图,每行对应一个节点,每列对应一个节点,各点权值等于其武器价钱的以e为底的对数,每个伞兵是连接其所在行列节点的一条边。对这个二分图求最小权独立集。转化为最小割,转化为最大流。View Code #include <iostream># 阅读全文
posted @ 2012-11-09 14:13 undefined2024 阅读(847) 评论(0) 推荐(0)