4950: [Wf2017]Mission Improbable
4950: [Wf2017]Mission Improbable
Time Limit: 1 Sec Memory Limit: 512 MB
Submit: 608 Solved: 222
[Submit][Status][Discuss]
Description


Input
Output
Sample Input
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
9
样例2
30
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #include<cmath>
- #include<algorithm>
- #include<queue>
- #define re register
- #define inf 400000000000000ll
- #define MAXN 205
- #define MAXM 1000001
- #define ll long long
- using namespace std;
- int cur[];
- struct po
- {
- ll nxt,to,w;
- }edge[MAXM];
- int head[MAXN],dep[MAXN],num=-;
- int l[MAXN],h[MAXN],a[][];
- int n,m,s,t;
- ll ans;
- inline int read()
- {
- int x=,c=;
- char ch=' ';
- while((ch>''||ch<'')&&ch!='-')ch=getchar();
- while(ch=='-')c*=-,ch=getchar();
- while(ch<=''&&ch>='')x=x*+ch-'',ch=getchar();
- return x*c;
- }
- inline void add_edge(int from,int to,int w)
- {
- edge[++num].nxt=head[from];
- edge[num].to=to;
- edge[num].w=w;
- head[from]=num;
- }
- inline void add(int from,int to,int w)
- {
- add_edge(from,to,w);
- add_edge(to,from,);
- }
- inline bool bfs()
- {
- memset(dep,,sizeof(dep));
- queue<int> q;
- while(!q.empty())
- q.pop();
- q.push(s);
- dep[s]=;
- while(!q.empty())
- {
- int u=q.front();
- q.pop();
- for(re int i=head[u];i!=-;i=edge[i].nxt)
- {
- int v=edge[i].to;
- if(dep[v]==&&edge[i].w)
- {
- dep[v]=dep[u]+;
- if(v==t)
- return ;
- q.push(v);
- }
- }
- }
- return ;
- }
- inline ll dfs(int u,ll dis)
- {
- if(u==t||!dis)
- return dis;
- ll diss=;
- for(re int& i=cur[u];i!=-;i=edge[i].nxt)
- {
- int v=edge[i].to;
- if(edge[i].w!=&&dep[v]==dep[u]+)
- {
- ll check=dfs(v,min(dis,edge[i].w));
- if(check>)
- {
- dis-=check;
- diss+=check;
- edge[i].w-=check;
- edge[i^].w+=check;
- if(dis==) break;
- }
- }
- }
- return diss;
- }
- inline ll dinic()
- {
- ll ans=;
- while(bfs())
- {
- for(re int i=s;i<=t;i++)
- cur[i]=head[i];
- while(ll d=dfs(s,inf))
- ans+=d;
- }
- return ans;
- }
- int main()
- {
- //freopen("date.in","r",stdin);
- memset(head,-,sizeof(head));
- n=read();m=read();
- for(re int i=;i<=n;i++)
- for(re int j=;j<=m;j++){
- a[i][j]=read();
- h[i]=max(h[i],a[i][j]);
- l[j]=max(l[j],a[i][j]);
- if(a[i][j]) ans+=a[i][j]-;
- }
- s=,t=n+m+;
- for(re int i=;i<=n;i++) if(h[i])ans-=h[i]-;
- for(re int i=;i<=m;i++) if(l[i])ans-=l[i]-;
- for(re int i=;i<=n;i++)
- for(re int j=;j<=m;j++){
- if(h[i]==l[j]&&h[i]&&a[i][j]){
- add(i,j+n,h[i]-);
- }
- }
- for(re int i=;i<=n;i++){
- if(!h[i]) continue;
- add(s,i,h[i]-);
- }
- for(re int i=;i<=m;i++){
- if(!l[i]) continue;
- add(i+n,t,l[i]-);
- }
- cout<<ans+dinic();
- return ;
- }
4950: [Wf2017]Mission Improbable的更多相关文章
- 【刷题】BZOJ 4950 [Wf2017]Mission Improbable
Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助 ...
- 【bzoj4950】【 [Wf2017]Mission Improbable】贪心+二分图匹配
(上不了p站我要死了,侵权度娘背锅) Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛 上豪赌输掉了一大笔钱 ...
- bzoj4950: [Wf2017]Mission Improbable
跟着靖靖做题%%%%% 这题一看就觉得和之前的某场模拟赛的一道题很像,找假如某行某列的最大值一样的就可以只堆一个,跑匈牙利就行 一开始以为箱子不能移动-_-! 然后有个坑,大家都知道当这个位置有箱子就 ...
- 【WF2017】Mission Improbable
http://www.lydsy.com/JudgeOnline/problem.php?id=4950 对于俯视图很好解决,把所有不是0的位置拿到剩1就可以了. 对于正视图与侧视图,稍微想一下也能发 ...
- #6472. 「ICPC World Finals 2017」难以置信的任务 Mission Improbable
可以简化一下问题,假设Patrick把箱子都拿走但是原来有箱子的位置留下一个,现在要放箱子使得每行每列最大值都满足,最少放多少个. 设第\(i\)行的最大值是\(H(i)\),第\(i\)列的是\(W ...
- bzoj4950(二分图最大匹配)
[Wf2017]Mission Improbable Time Limit: 1 Sec Memory Limit: 1024 MBSubmit: 105 Solved: 49[Submit][S ...
- World Finals 2017 (水题题解)
看大佬做2017-WF,我这种菜鸡,只能刷刷水题,勉强维持生活. 赛后补补水题. 题目pdf链接,中文的,tls翻译的,链接在这里 个人喜欢在vjudge上面刷题. E Need for Speed ...
- Java 性能分析工具 , 第 3 部分: Java Mission Control
引言 本文为 Java 性能分析工具系列文章第三篇,这里将介绍如何使用 Java 任务控制器 Java Mission Control 深入分析 Java 应用程序的性能,为程序开发人员在使用 Jav ...
- 正则表达式30分钟入门:http://deerchao.net/tutorials/regex/regex.htm#mission
http://deerchao.net/tutorials/regex/regex.htm#mission
随机推荐
- JEECMS 2.4.2 之添加新的可扩展的ftl模版文件、自定义方法
Demo: <@cms.CfgList isPage='1' league='0' recommend='0' lala='0' hot='1' memberId='0' pageNo=page ...
- 2016-06-19 NOIP模拟赛
2016-06-19 NOIP模拟赛 by coolyangzc 共3道题目,时间3小时 题目名 高级打字机 不等数列 经营与开发 源文件 type.cpp/c/pas num.cpp/c ...
- 《从零开始学Swift》学习笔记(Day 15)——请注意数字类型之间的转换
原创文章,欢迎转载.转载请注明:关东升的博客 在C.Objective-C和Java等其他语言中,整型之间有两种转换方法: 从小范围数到大范围数转换是自动的: 从大范围数到小范围数需要强制类型转换,有 ...
- Java的四种引用,强弱软虚,用到的场景
众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活).为了解决内存操作不灵活这个问题,可以采用软引用等方法. 在J ...
- delphi 创建服务,安装与卸载服务
运行Delphi7,选择菜单File-->New-->Other--->Service Application.将生成个服务框架.将工程保存为ServiceDemo.dpr和Unit ...
- 巨蟒python全栈开发django1:自定义框架
今日大纲: 1.val和text方法的补充 2.信息收集卡用bootstrap实现 3.自定义web框架 4.http协议 5.自定义web框架2 今日内容详解: 1.val和text方法的补充 ht ...
- es 中 for in for of
arr=[11,22,33,44,55,66,77,88]for (const i in arr){ console.log(i) if (i===4){ console.log(arr[i]) }} ...
- amortized analysis
w https://en.wikipedia.org/wiki/Amortized_analysis In computer science, amortized analysis is a meth ...
- 修改本机域名localhost为任意你想要的名称
web项目研发中,测试的时候项目路径与发布以后的路径不一致,项目组之间的路径不一致,这样会加大工作量,这个时候我们可以统一一下开发的路径,这样可以省很多事,话不多说,看下面教程: 在系统盘中的如下路径 ...
- LOJ#2230. 「BJOI2014」大融合
LOJ#2230. 「BJOI2014」大融合 题目描述 小强要在$N$个孤立的星球上建立起一套通信系统.这套通信系统就是连接$N$个点的一个树.这个树的边是一条一条添加上去的. 在某个时刻,一条边的 ...