bzoj4950(二分图最大匹配)

[Wf2017]Mission Improbable

Time Limit: 1 Sec  Memory Limit: 1024 MB
Submit: 105  Solved: 49
[Submit][Status][Discuss]

Description

那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙。Patrick在编程竞赛
上豪赌输掉了一大笔钱,所以他需要再干一票。为此他需要你的帮助,虽然你已经金盆洗手了。你刚开始很不情愿,
因为你一点也不想再回到那条老路上了,但是你觉得听一下他的计划也无伤大雅。在附近的一个仓库里有一批货物,
包含一些贵重的消费性部件,Patrick企图从中尽可能多地偷些东西出来。这意味着要找一条进去的路,弄晕安保人
员,穿过各种各样的激光射线,你懂的,都是常见的抢劫技术。然而,仓库的核心装备了一套Patrick搞不定的安保系
统。这也是他需要你帮助他的地方。这批货物被放置在一些巨大的立方体箱里,每个箱子的尺寸都是相同的。这些
箱子堆放成许多整齐的堆,每个箱子可以表示成一个三维的网格。安保系统每个小时会用三台相机对这堆货物进行
一次拍照,相机分别为:前置相机(front camera),侧置相机(side camera)和顶置相机(top camera)。前置相机的照
片显示了每一行最高的那堆箱子的高度,侧置相机显示了每一列最高的那堆箱子的高度,顶置相机显示了每个位置是
否存在一堆箱子。如果安保系统发现任何一张照片出现了变化,它会立即拉响警报。一旦 Patrick 进去了,他会确
定每堆箱子的高度并且发给你。图1显示了一种网格可能的放置,以及每台相机会得到的视图。
图 1. 网格的高度值与对应的相机视图。
图 2. 洗劫后网格可能的高度值。
Patrick想尽可能多偷走一些箱子。由于他不能弄坏安保系统,他准备重新安排剩余每堆箱子的放置,使得下一次相
机取像时会得到相同的照片,从而骗过安保系统。在上面的例子中,他可以偷走九个箱子。图2显示了一种可能的剩
余箱子的安置方案能使得安保系统认为与原安置情况相同。Patrick想请你帮他确定在保证能骗过安保系统的情况
下他最多能偷走多少个箱子。你会帮他干完这最后一票么?

Input

第一行包含两个整数r(1≤r≤100)和c(1≤n≤100),分别表示网格的行数与列数。
接下来r行,每行包含c个整数,表示对应行上每堆立方体箱的高度(箱子的数量)。
所有的高度在0到10^9之间 (含边界) 。

Output

输出在不被发现的情况下最多能偷走多少箱子。

Sample Input

样例1
5 5
1 4 0 5 2
2 1 2 0 1
0 2 3 4 4
0 3 0 3 1
1 2 2 1 1
样例2
2 3
50 20 3
20 10 3

Sample Output

样例1
9
样例2
30
题解:
这道题应该如何去想,侧面的,前面的相机,就是行和列的最大值,而上面的相机,只会是判断该点有无,
行的最大值有可能是列的最大值,那么就可以偷更多的箱子,所以如果该点是行列的最大值,就连一条边,
然后就ok了。
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #define MAXN 100000+10 
 7 using namespace std;
 8 typedef long long LL; 
 9 struct ed{LL v,next;}edge[MAXN]; 
10 LL match[220],head[220],vis[220],n,m; 
11 LL map[220][220],sum=0,mh[220],ml[220]; 
12 void add(LL u,LL v){ 
13     static LL tot=0; 
14     edge[++tot].v=v; 
15     edge[tot].next=head[u]; 
16     head[u]=tot; 
17 } 
18 bool dfs(LL u){ 
19     for(LL i=head[u];i;i=edge[i].next){ 
20         LL v=edge[i].v; 
21         if(vis[v])continue; 
22         vis[v]=1; 
23         if(!match[v]||dfs(match[v])){ 
24             match[v]=u; 
25             return true; 
26         } 
27     } 
28     return false; 
29 } 
30 int main(){ 
31     scanf("%lld%lld",&n,&m); 
32     for(LL i=1;i<=n;i++) 
33         for(LL j=1;j<=m;j++){ 
34             scanf("%lld",&map[i][j]); 
35             mh[i]=max(mh[i],map[i][j]); 
36             ml[j]=max(ml[j],map[i][j]); 
37             if(map[i][j])sum+=map[i][j]-1; 
38         } 
39     for(LL i=1;i<=n;i++) 
40         for(LL j=1;j<=m;j++) 
41             if(mh[i]&&map[i][j]&&mh[i]==ml[j])add(i,n+j); 
42     for(LL i=1;i<=n;i++)if(mh[i])sum-=mh[i]-1; 
43     for(LL i=1;i<=m;i++)if(ml[i])sum-=ml[i]-1; 
44     for(LL i=1;i<=n;i++){ 
45         memset(vis,0,sizeof(vis)); 
46         if(mh[i]&&dfs(i))sum+=mh[i]-1; 
47     } 
48     printf("%lld",sum); 
49     return 0; 
50 }

 

转载于:https://www.cnblogs.com/fengzhiyuan/p/7717503.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454283.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 远程仓库管理 分支创建、管理、查看、切换

作用&#xff1a; 区分生产环境代码以及开发环境代码研究新的功能或者攻关难题解决线上bug 特点&#xff1a; 项目开发中公用分支包括master、dev分支master是默认分支&#xff0c;用于发布&#xff0c;当需要发布时将dev分支合并到master分支分支dev是用于开发的分支&#…

大学生活应该这样度过之参加一个社团让自己溶入团队——《程序员羊皮卷》连载(11)

《程序员羊皮卷》当当购买地址&#xff1a;http://product.dangdang.com/product.aspx?product_id20691986 互动购买地址&#xff1a;http://www.china-pub.com/196049 1.3参加一个社团让自己溶入团队 有人曾经问我“学校里的什么活动和工作中的项目管理比较类似&#xff1f…

Hadoop Hive概念学习系列之hive的数据压缩(七)

Hive文件存储格式包括以下几类&#xff1a; 1、TEXTFILE 2、SEQUENCEFILE 3、RCFILE 4、ORCFILE 其中TEXTFILE为默认格式&#xff0c;建表时不指定默认为这个格式&#xff0c;导入数据时会直接把数据文件拷贝到hdfs上不进行处理。 SEQUENCEFILE&#xff0c;RCFILE&#xff0c;O…

java 加锁_Java并发之synchronized深入

一句话总结synchronized&#xff1a;JVM会自动通过使用monitor来加锁和解锁&#xff0c;保证了同时只有一个线程可以执行指定代码&#xff0c;从而保证了线程安全&#xff0c;同时具有可重入和不可中断的性质。一.synchronized的作用使用synchronized修饰方法或者代码块时&…

激活函数之 Sigmoid、tanh、ReLU、ReLU变形和Maxout

Sigmoid函数 Sigmoid函数计算公式 sigmoid&#xff1a;x取值范围(-∞&#xff0c;∞)&#xff0c;值域是(0, 1)。 sigmoid函数求导 这是sigmoid函数的一个重要性质。 图像 代码 # -*- coding: utf-8 -*- """ author: tom """import numpy im…

Python查看、修改pip install 默认使用的pip库

一、更改 Python 的 pip install 默认使用的pip库 【方法】只需要将对应python脚本的路径添加到系统环境变量Path中较前的位置即可&#xff0c;这样就可以获得优先级。 1、打开终端&#xff0c;可以通过指令 pip show pip 查看默认使用的pip包&#xff1a; 2、现在&#xff…

cmd 找到8080对应进程_多进程概括

多进程图像操作系统记录进程&#xff0c;并按照合理的次序交替推进(分配资源&#xff0c;不断调度)&#xff0c;提高CPU利用率和程序执行速度&#xff0c;这就是操作系统的多进程图像。当操作系统启动时&#xff0c;多进程图像就出现了。 在linux内核源码main.c文件中&#xff…

机器学习接口和代码之 KNN

官网地址&#xff1a;https://scikit-learn.org/stable/modules/classes.html#module-sklearn.neighbors class sklearn.neighbors.KNeighborsClassifier(n_neighbors5, weights’uniform’, algorithm’auto’, leaf_size30, p2, metric’minkowski’, metric_paramsNone, n…

Eclipse中安装Ext插件(Spket IDE)

在网上找了很多资料&#xff0c;这里重新整理一下。 Spket IDE是目前支持Ext 2.0最为出色的IDE。 它采用.jsb project file 文件并将继承于基类和所有文档的内容嵌入到生成代码提示的. doc中。由于Spket只是一个单纯的编辑器&#xff0c;没有其它格式的支持&#xff08;如CSS&a…

职业程序员培养之道

作者&#xff1a;粘新育 任甲林 来源&#xff1a;希赛网  http://www.csai.cn 2004年06月28日软件开发是以人为核心的过程&#xff0c;对人的依赖性远高于传统的硬件生产企业&#xff0c;为了保持开发能力的稳定性&#xff0c;一方面需要定义软件过程&#xff0c;以过程为枢纽…

MongoDB启动

详细见大神链接 链接: https://blog.csdn.net/chenpuzhen/article/details/90642147.

Go 语言编程规范

1. gofmt 命令 大部分的格式问题可以通过 gofmt 来解决&#xff0c;gofmt 自动格式化代码&#xff0c;保证所有的 go 代码与官方推荐的格式保持一致&#xff0c;所有格式有关问题&#xff0c;都以gofmt的结果为准。所以&#xff0c;建议在提交代码库之前先运行一下这个命令。 2…

python去噪音_python中的噪声是什么意思

你的序列均值为零吗? 方差随时间变化吗? 值与延迟值相关吗? 你可以用一些工具来检查你的时间序列是否为白噪音: 创建一个折线图。检查总体特征&#xff0c;如变化的平均值&#xff0c;方差或延迟变量之间的明显关系。 计算汇总统计。对照序列中有意义的连续块的均值和方差&a…

pycharm 离线安装插件

插件离线下载地址&#xff1a; http://plugins.jetbrains.com/ 1、下载插件&#xff1a;http://plugins.jetbrains.com/ 2、安装插件&#xff1a; settings -> plugins -> install plugin from disk&#xff0c;然后重启IDEA即可。

为机器学习占地16

是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate < 0.5)。 集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。 …

VC DLL学习

1 用VC创建DLL动态链接库1.1 创建dll项目1.2 为dll项目编写源文件头文件dllDemo.hextern"C"_declspec(dllexport) intSum(inta,intb);//加法函数。extern"C"_declspec(dllexport) intMax(inta, intb);//取较大值函数extern"C"_declspec(dllexpor…

mciSendString 多线程播放多首音乐 注意事项

昨天晚上遇到一个问题&#xff1a; 使用 mciSendString 控制播放多首音乐的时候&#xff0c;出现最后一次播放的音乐无法通过 mciSendString ("close mp3") 关闭音乐的播放。 mciSendString 在多个线程中调用。 到23点&#xff0c;问题依然没解决&#xff0c;只好先…

python代码比例_Python如何输出百分比

Python 输出百分比的两种方式 注&#xff1a; 在python3环境下测试。 方式1&#xff1a;直接使用参数格式化&#xff1a;{:.2%} {:.2%}&#xff1a; 显示小数点后2位 显示小数点后2位&#xff1a; >>> print(percent: {:.2%}.format(42/50)) percent: 84.00% 不显示小…

为机器学习占地15

是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrat弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。 常见的集成学习思想有&#xff1a;Baggi…

编写一个项目开发文档

项目开发过程中为了增加程序的可读性和程序的健壮性&#xff0c; 方便后期程序的调试和维护&#xff0c;所以需要在开发过程中统一技术规范&#xff0c;一般会在项目初期确定好相关文档作为这一统一的规范。不同公司会对文档做不同要求&#xff0c;划不同的分类&#xff0c;但一…