pku 3308 Paratroopers

      这是一道最小点覆盖问题,以前也做过类似的,但那道题没有权值,做法是点数减去二分图匹配数(如果构图时重复计算了,二分匹配数别忘了除2)。而这道题有权值,方法是加入超级源点和超级汇点,源点和所有行节点相连,所有列节点和汇点相连,权值为行或列的花费,如果a行b列有敌人,则把节点a和节点b相连,权值为无穷大。现在求源点和汇点之间的最小割,即最大流。

      还有一个需要注意的地方是,这里问题是要求cost的乘积可以通过使用log()把乘法先转换为加法,最后输出的时候再用exp()转换回去。

      这道题还有几个地方把我恶心了,一是在精度控制上(cap[u][v]>flow[u][v]+1E-8),二是再g++中用printf时参数为lf有问题,要用f,vc++没有这个问题

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值