bzoj 4950: [Wf2017]Mission Improbable(二分匹配)
4950: [Wf2017]Mission Improbable
Time Limit: 1 Sec Memory Limit: 1024 MB
Submit: 122 Solved: 58
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
Sample Output
这题有毒
先把所有的箱子全部拿掉,再想办法放上去
①首先所有原本有箱子的格子上放回1个箱子
②然后每行、每列各选择任意一个格子放箱子,使得满足主视图侧视图要求
到这里就满足条件了,但显然不是最优解,因为当行最大值和列最大值相等的时候,只需要选择行列交叉的地方放箱子即可同时满足行列最大值要求,这样可以少放一堆
③那怎么办啊?考虑二分匹配,如果第x行和第y列最大值相等,且(x, y)上原本有箱子,那么x->y连一条边,求出最大匹配,最大匹配中的每一条边都可以为你剩下一堆箱子,全部减去就好了
注意最大值为0的情况!
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define LL long long
int m, vis[105], link[105], road[105][105], a[105][105], h[105], c[105];
int Sech(int x)
{int i;for(i=1;i<=m;i++){if(vis[i]==0 && road[x][i]){vis[i] = 1;if(link[i]==0 || Sech(link[i])){link[i] = x;return 1;}}}return 0;
}
int main(void)
{LL ans = 0;int n, i, j;scanf("%d%d", &n, &m);for(i=1;i<=n;i++){for(j=1;j<=m;j++){scanf("%d", &a[i][j]);h[i] = max(h[i], a[i][j]);c[j] = max(c[j], a[i][j]);ans += max(a[i][j]-1, 0);}}for(i=1;i<=n;i++){for(j=1;j<=m;j++){if(h[i] && h[i]==c[j] && a[i][j]!=0)road[i][j] = 1;}}for(i=1;i<=n;i++){memset(vis, 0, sizeof(vis));Sech(i);}for(i=1;i<=n;i++)ans -= max(h[i]-1, 0);for(i=1;i<=m;i++)ans -= max(c[i]-1, 0);for(i=1;i<=m;i++){if(link[i])ans += max(c[i]-1, 0);}printf("%lld\n", ans);return 0;
}
bzoj 4950: [Wf2017]Mission Improbable(二分匹配)相关推荐
- POJ - 2446 Chessboard 二分匹配+建图
题目链接 题意很简单,是二分匹配的一种常见的题型,问题就在于怎样转换到二分图上来. 首先对对n*m-k正常点进行编号,然后遍历查找每一个正常点的上下左右是否能连接(就是判断另个点是否也是正常的),如果 ...
- poj3041--Asteroids(二分匹配)[将矩阵行列转化为边]
题目大意,给出n*n的矩阵,其中有m个流星,一下给出每颗流星的坐标,每一次攻击可以消除一行或一列的流星,问最少攻击几次? 竟然是二分匹配!竟然是二分匹配!竟然是二分匹配!竟然是二分匹配! 建图,以行为 ...
- 香港大学提出OneNet:一阶段端到端目标检测网络,无需NMS!无需二分匹配!
点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文作者:孙培泽 | 编辑:Amusi https://zhuanlan.zhihu.com ...
- 杭电2063--过山车(二分匹配)
过山车 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- pku 1486 求出二分匹配图中的必须边
开始楞是没看懂意思,E文让我很纠结... 要判断一条边是否为二分图中必须边,方法如下: 1.先求出原图的任意最大匹配 2.对二分图某一边的所有点,删去其当前的匹配边.删的过程不是简单的将原图设为不连通 ...
- POJ1325二分匹配或者DINIC(最小路径覆盖)
题意: 有k个任务,两个机器,第一个机器有n个模式,第二个机器有m个模式,每个任务要么在第一个机器的一个模式下工作,要么在第二个机器的一个模式下工作,机器每切换一个模式需要重启一次,两个 ...
- POJ2239简单二分匹配
题意: 一周有7天,每天可以上12节课,现在给你每科课的上课时间,问你一周最多可以上几科课,一科课只要上一节就行了. 思路: 简单题目,直接二分就行了,好久没写二分匹配了,练习 ...
- hdu2413 二分+二分匹配
题意: 地球和外星球大战,地球有n个飞船,外星球有m个飞船,每个飞船有自己的其实战舰和战舰增长率,星球于星球之间有距离,问你最少多少年地球可以打败外星球,每个星球最多只能和一个星球对战.. ...
- LibreOJ #2006. 「SCOI2015」小凸玩矩阵 二分答案+二分匹配
#2006. 「SCOI2015」小凸玩矩阵 内存限制:256 MiB时间限制:1000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 小 ...
最新文章
- windows下sqlite3的基本操作
- python linux命令-Python之路【第三篇】:Linux常用命令
- 【Android 应用开发】Android 图表绘制 achartengine 示例解析
- ABAP动态取得数据的方法
- 2.4操作系统之死锁详解(预防、避免、检测、解除)+思维导图
- cad小插件文字刷_文字狗最佳排版神器 小恐龙公文排版助手Office WPS插件
- 【图像处理基础知识】-傅里叶变换
- Linux网络配置之二ip、ss、网络相关配置文件
- 新的开始,从CSDN
- 【优化求解】基于matalb遗传算法求解岛屿物资补给优化问题【含Matlab源码 172期】
- scikit keras_使用Scikit-Learn,Scikit-Opt和Keras进行超参数优化
- 异常重试_面试题:如何基于 dubbo 进行服务治理、服务降级、失败重试?
- 0-9 倒计时 8x8 点阵 实现
- soap xml 转 json
- java-net-php-python-java交通事故档案管理系统PPT计算机毕业设计程序
- 毕业论文避免查重率过高技巧
- 读《熵减 华为活力之源》
- 试题 B: 顺子日期
- KML中的颜色表示顺序是ABGR
- 绿联mac网线转USB osx10.9-11.0.1
热门文章
- python自学行吗-有编程基础Python自学行吗?
- python装饰器详解-python装饰器详解
- python中国官网-中蟒 (中文 Python) 編程語言網站 chinesepython
- 学完python能做什么-学完Python后能做什么?
- 前端用户忘记密码,手机验证码修改密码功能
- c语言mpi矩阵乘法,【MPI并行程序】矩阵乘法
- java sort类_JAVA Collections工具类sort()排序方法
- MPlayer 使用手册中文版
- php if echo,多个?php if .. echo'..'; ?如何优化写法?
- python中plot不能显示标签_python 2: 解决python中的plot函数的图例legend不能显示中文问题...