POJ 3308 Paratroopers
POJ_3308
这个题目有点像二分图最小点集覆盖问题,但由于边带权,所以不能直接用二分图最大匹配来做。
参考了别人的想法之后,发现构图的时候原来还是要用的二分图的思想,将行、列分别看做一个集合,由于最后求费用乘积的最小值,所以先传化成log2形式的费用,源点与行之间的容量初始化为log2行费用,列与汇点之间的容量初始化log2列费用。之后对读入的伞兵位置对应的行和列之间连一条有向边,容量为INF。
最后只要求一下最小割就可以了,也就是最大网络流。
#include<stdio.h>#include<string.h>#include<math.h>double cap[110][110],flow[110][110],a[110];int q[110],p[110];int main(){int i,j,k,n,m,l,T,t,u,v,front,rear;double f,temp; scanf("%d",&T);while(T--) { scanf("%d%d%d",&m,&n,&l); t=m+n+1;for(i=0;i<=t;i++)for(j=0;j<=t;j++) { cap[i][j]=0.0; flow[i][j]=0.0; }for(i=1;i<=m;i++) { scanf("%lf",&temp); cap[0][i]=log2(temp); }for(i=m+1;i<t;i++) { scanf("%lf",&temp); cap[i][t]=log2(temp); }for(i=0;i<l;i++) { scanf("%d%d",&u,&v); cap[u][m+v]=1000000000.0; } f=0;while(1) {for(i=1;i<=t;i++) a[i]=0.0; a[0]=1000000000.0; front=rear=0; q[rear++]=0;while(front<rear) { u=q[front++];for(v=0;v<=t;v++)if(a[v]<1e-8&&cap[u][v]>flow[u][v]) { temp=cap[u][v]-flow[u][v]; a[v]=a[u]<temp?a[u]:temp; p[v]=u; q[rear++]=v; } }if(a[t]<1e-8)break;for(u=t;u!=0;u=p[u]) { flow[p[u]][u]+=a[t]; flow[u][p[u]]-=a[t]; } f+=a[t]; } printf("%.4f\n",pow(2,f)); }return 0;}
POJ 3308 Paratroopers相关推荐
- zoj 2874 amp; poj 3308 Paratroopers (最小割)
意甲冠军: 一m*n该网络的规模格.详细地点称为伞兵着陆(行和列). 现在,在一排(或列) 安装激光枪,激光枪可以杀死线(或塔)所有伞兵.在第一i安装一排 费用是Ri.在第i列安装的费用是Ci. 要安 ...
- POJ 3308 Paratroopers (对数转换+最小点权覆盖)
题意 敌人侵略r*c的地图.为了消灭敌人,可以在某一行或者某一列安置超级大炮.每一个大炮可以瞬间消灭这一行(或者列)的敌人.安装消灭第i行的大炮消费是ri.安装消灭第j行的大炮消费是ci现在有n个敌人 ...
- poj 3308(最小割求解最小点权覆盖)
火星人侵略地球,他们意图登陆破坏某个地区的兵器工厂.据探子回报,火星人登陆的地区为n*m大小的地域,而且每一个火星人的着陆点坐标已知. 火星人很强悍,只要有一个火星人着陆后能够幸存,他必定能毁坏这片区 ...
- POJ 3308 最少点集覆盖
题意:和Uva 11419 类似. 首先最少点集覆盖 = 最大匹配. 我们可以在 S 和行 的边 不是1,有了权值,但是题意要求的是乘积最小,那么可以用 log(a*b) = loga + logb ...
- poj pku图论、网络流入门题总结、汇总
poj pku图论.网络流入门题总结.汇总 分类: acm图论 2010-08-25 18:49 243人阅读 评论(0) 收藏 举报 网络算法networkgraphconstructioninte ...
- POJ 图论分类 + DP(较全 自己又加了点)
DP -----------动态规划 状态压缩DP 2411 (棋盘规模较大)状态压缩DP+DFS+滚动数组 2664 (棋盘规模较小)直接递推即可(DP) 2506 (棋盘规模较小)直接递推即可(D ...
- 【转载】图论 500题——主要为hdu/poj/zoj
转自--http://blog.csdn.net/qwe20060514/article/details/8112550 =============================以下是最小生成树+并 ...
- 【HDOJ图论题集】【转】
1 =============================以下是最小生成树+并查集====================================== 2 [HDU] 3 1213 How ...
- 一系列图论问题[转]
=============================以下是最小生成树+并查集====================================== [HDU] 1213 How Many ...
最新文章
- php对接支付宝当面付对接,支付宝开放平台当面付对接网站
- Java编译器、JVM、解释器
- php ajax实现查询功能,ajax实现分页查询功能
- Hive 常见问题与技巧【Updating】
- P1971 [NOI2011]兔兔与蛋蛋游戏
- python爬取学籍_仝卓学籍造假微博道歉,用Python抓取微博的评论看看群众都说什么...
- C语言作业 – 数组排序算法可视化
- python 等差数列list_Python3基础 list range+for 等差数列
- Python实现WGS 84坐标与web墨卡托投影坐标的转换
- 怪物猎人online 日服 注册流程(原创)
- STM8S103之tim2PWM输出
- 图解通信原理与案例分析-16:2G GSM基站的工作原理--时分多址与无线资源管理RRM
- 圆柱体积怎么算立方公式_圆柱体积计算公式 怎么计算
- sysbench和lua的简单研究
- html视频如何转换成mp4视频格式,将MP4、MPEG、MOV等格式的视频转换成WEBM格式的方法...
- 恢复视力的方法(飞行员都用)治近视的秘方!1000度近视降到只有200
- git、gitlab+jenkens版本控制的安装、升级与灾备
- 计算机为什么无法访问公司共享文件夹,win10系统共享文件夹无法访问的详细方案...
- HTML 个人简历模板简易版
- 迅搜中文分词简明教程