worldfinal2017-C(二分最大匹配)
来源:互联网 发布:mac安装ant 编辑:程序博客网 时间:2024/05/20 22:40
题目大意:箱子可以任意移动然后如何移动可以从三个面不看从而偷走最大数量的箱子数
题解思路:如果有
30 20
20 10 这样最优的方案是把左下的箱子数和右下的箱子数互换然后再偷方案最优也就是每一个最大的箱子数可以同时占掉一行和一列的最大箱子数
那么就是二分最大匹配求最多每一个最大的箱子数可以同时占掉一行和一列的最大箱子数,之后其他位置没被占用到的只能占一行或者一列然后其他的箱子可以偷得只剩一个。
注意有可能一行或者一列的箱子数都为0所以要判断一下是否箱子数全部为0。
题目链接
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;typedef long long int ll;const int mx = 110;int map[mx][mx];ll sd[mx],fr[mx];int vis[mx],mark[mx];ll a[mx][mx];int n,m;int find(int x){ //二分最大匹配 for(int i = 1; i <= n; i++) if(map[i][x] && !vis[i]){ vis[i] = 1; if(!mark[i] || find(mark[i])){ mark[i] = x; return 1; } } return 0;}int main(){ memset(sd,0,sizeof(sd)); memset(fr,0,sizeof(fr)); memset(mark,0,sizeof(mark)); memset(map,0,sizeof(map)); scanf("%d%d",&n,&m); ll sum = 0,ans = 0; //sum表示箱子总数,ans表示箱子一个箱子也不能动的箱子数的总数 ll sub = 0; //用sub表示可以偷的箱子位置数 for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++){ scanf("%lld",&a[i][j]); sd[i] = max(sd[i],a[i][j]); fr[j] = max(fr[j],a[i][j]); sum += a[i][j]; if(a[i][j]) sub++; } for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) if(a[i][j] && sd[i] == fr[j]) map[i][j] = 1; for(int i = 1; i <= m; i++){ memset(vis,0,sizeof(vis)); find(i); if(fr[i]){ ans += fr[i]; sub--; } } for(int i = 1; i <= n; i++) if(!mark[i] && sd[i]){ ans += sd[i]; sub --; } printf("%lld\n",sum-ans-sub); return 0;}
阅读全文
0 0
- worldfinal2017-C(二分最大匹配)
- 二分图(最大匹配)
- UVa live6525Attacking rooks(二分最大匹配之最大匹配)
- HDU 2063过山车(二分最大匹配之最大匹配)
- 二分图最大匹配(匈牙利算法)
- 二分图最大匹配(匈牙利算法)
- PKU 2446(最大二分图匹配)
- 二分图最大匹配(匈牙利算法)
- 匈牙利算法(二分图最大匹配)
- 二分图最大匹配(匈牙利算法)
- poj1469--COURSES(二分图最大匹配)
- HDU2063 过山车(二分图最大匹配)
- 二分图最大匹配(匈牙利算法)
- HDU 1083 Courses (二分最大匹配)
- COURSES(poj1469,二分图最大匹配)
- HDU 2063 过山车(最大二分匹配)
- 二分图最大匹配(匈牙利算法)
- hdu 2413(最大匹配+二分)
- DonMin-2017-5-27-day04
- 分针网—每日分享:Axios全攻略
- 一种基于Makefile的编译系统架构实现及自动化
- Spring中监听器的详解
- 如何低成本搭建高性能分布式搜索引擎?
- worldfinal2017-C(二分最大匹配)
- 剑指Offer-17
- 返回顶部
- .net MVC接口编写和调用
- Java多线程详解生产者和消费者
- 让tomcat支持https
- MTK6735 Android之Camera驱动移植篇
- 在SecureCRT中设置上传下载目录
- linux下挂载ntfs文件系统