[日常摸鱼]bzoj1001狼抓兔子-最大流最小割
题意就是求最小割…
然后我们有这么一个定理(最大流-最小割定理 ):
任何一个网络图的最小割中边的容量之和等于图的最大流。
(下面直接简称为最大流和最小割)
证明:
如果最大流>最小割,那把这些割边删去之后依然能找到一条增广路使得源点和汇点联通,和这些边是最小割矛盾。故最大流$\leq$最小割。
而如果最大流<最小割,可是这样通过这些割边还能有更大的流,和最大流矛盾。
综上,最大流=最小割~
然后看看这道题…哇$n\leq 1000$,百万个点百万条边…好吧Dinic其实跑得过…而且还蛮快的…
(我怀疑正解应该是平面图最小割转对偶图最短路?毕竟dinic的理论复杂度好像不太行…)
- #include<cstdio>
- #define rep(i,a) for(register int i=1;i<=a;++i)
- #define debug(x) printf("%s = %d ",#x,x)
- const int N=1000005;
- const int M=1000005;
- const int INF=(~0u>>1);
- struct edge
- {
- int to,nxt,w;
- edge(int to=0,int nxt=0,int w=0):to(to),nxt(nxt),w(w){}
- }edges[N*10];
- int n,m,cnt,st,ed,s,t,ans;
- int head[N*10],d[N],q[N];
- inline int min(int a,int b){return a<b?a:b;}
- inline void addEdge(int u,int v,int w)
- {
- edges[++cnt]=edge(v,head[u],w);head[u]=cnt;
- edges[++cnt]=edge(u,head[v],w);head[v]=cnt;
- }
- #define cur edges[i].to
- inline bool bfs()
- {
- rep(i,t)d[i]=0;d[s]=1;
- st=ed=0;q[st++]=s;
- while(ed<st)
- {
- int k=q[ed++];
- for(register int i=head[k];i;i=edges[i].nxt)if(edges[i].w&&!d[cur])
- {
- d[cur]=d[k]+1;q[st++]=cur;
- if(cur==t)return 1;
- }
- }
- return 0;
- }
- inline int dinic(int x,int f)
- {
- if(x==t)return f;
- int res=f;
- for(register int i=head[x];i&&res;i=edges[i].nxt)if(edges[i].w&&d[cur]==d[x]+1)
- {
- int k=dinic(cur,min(res,edges[i].w));
- if(!k)d[cur]=0;
- edges[i].w-=k;edges[i^1].w+=k;res-=k;
- }
- return f-res;
- }
- #undef cur
- inline int get_num(int i,int j)
- {
- return (i-1)*m+j;
- }
- int main()
- {
- scanf("%d%d",&n,&m);cnt=1;s=get_num(1,1);t=get_num(n,m);
- int x;
- rep(i,n)rep(j,m-1){scanf("%d",&x);addEdge(get_num(i,j),get_num(i,j+1),x);}
- rep(i,n-1)rep(j,m){scanf("%d",&x);addEdge(get_num(i,j),get_num(i+1,j),x);}
- rep(i,n-1)rep(j,m-1){scanf("%d",&x);addEdge(get_num(i,j),get_num(i+1,j+1),x);}
- int flow;
- while(bfs())while((flow=dinic(s,INF)))ans+=flow;
- printf("%d",ans);
- return 0;
- }
[日常摸鱼]bzoj1001狼抓兔子-最大流最小割的更多相关文章
- [BJOI2006][bzoj1001] 狼抓兔子 [最小割]
题面: 传送门 思路: 其实就是一道最小割的题目...... 我的写法加了两个优化,常数比较小,所以过掉了 一个是当前弧,一个是若当前点并不能流出去,那么标记dep为-1 听说正解是对偶图最短路?可以 ...
- [bzoj1001]狼抓兔子 最小割
题意概述:给出一张无向图,每条边有一个权值,割掉这条边代价为它的权值,求使起点不能到达终点的最小代价. 显然能看出这是个最小割嘛,然后最小割=最大流,建图的时候特殊处理一下再跑个最大流就好了. #in ...
- bzoj1001狼抓兔子 对偶图优化
bzoj1001狼抓兔子 对偶图优化 链接 https://www.lydsy.com/JudgeOnline/problem.php?id=1001 思路 菜鸡总是要填坑的! 很明显让你求网格图的最 ...
- bzoj1001: [BeiJing2006]狼抓兔子 -- 最小割
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- BZOJ-1001 狼抓兔子 (最小割-最大流)平面图转对偶图+SPFA
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 14686 Solved: 3513 [Submit][ ...
- bzoj1001狼抓兔子
1001: [BeiJing2006]狼抓兔子 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你 ...
- BZOJ1001:狼抓兔子(最小割最大流+vector模板)
1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还比较笨, ...
- BZOJ 1001 狼抓兔子 (最小割转化成最短路)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 27715 Solved: 7134[Submit][ ...
随机推荐
- 怎么用MindManager制作议论文思维导图
大家都写过作文吧,做小学到高考到大学,这是谁也摆脱不了的,但是大家写作文会提前把自己的思路整理出来吗?让自己行文更为顺畅,作文更为流利吗?特别是关于议论文,一直是高考写作的一个重点篇目,写好议论文,就 ...
- Word文档数据被误删了怎么办,还能恢复吗
很多时候由于时间紧张或者是思路不想被打断,我们在编辑Word时不能及时的手动保存,一旦遇到电脑意外断电的情况可能就会导致编辑好的Word文档内容丢失.或者是文档编辑好了之后,Word提示是否保存时,误 ...
- 痞子衡嵌入式:在IAR开发环境下为工程开启CRC完整性校验功能的方法
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下为工程开启CRC完整性校验功能的方法. CRC校验在嵌入式领域里的应用非常广,比如在通信领域,CRC检验值可以作为数据 ...
- python+requests之接口测试
最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...
- Mybatis【2】-- 多个mapper文件以及namespace作用
多个mapper文件以及namespace作用 要是多个mapper文件的时候怎么处理,namespace又是干什么用的呢 首先我们来看创建数据库语句: #创建数据库 CREATE DATABASE ...
- CBV装饰校验的三种方式session
代码如下: from django.shortcuts import render,HttpResponse,redirect from django.views import View # Crea ...
- MySQL数据库入门学习
一. 前言 作为一名大二在校生,因为正在学习网页设计,考虑到后台问题,所以便自学了数据库,可能给大家总结的不是很全,但是一些必要的点肯定会讲到.现在市场上有很多图形化的数据库, 二. MySQL基础知 ...
- 最新小样本学习综述 A Survey on Few-Shot Learning | 四大模型Multitask Learning、Embedding Learning、External Memory…
目录 原文链接: 小样本学习与智能前沿 01 Multitask Learning 01.1 Parameter Sharing 01.2 Parameter Tying. 02 Embedding ...
- 基于 MongoDB 动态字段设计的探索
一.业务需求 假设某学校课程系统,不同专业课程不同 (可以动态增删),但是需要根据专业不同显示该专业学生的各科课程的成绩,如下: 专业 姓名 高等数学 数据结构 计算机 张三 90 85 计算机 李四 ...
- java简单的实现搜索框的下拉显示相关搜索功能
最近做了一个简单的搜索框下面下拉显示相关搜索的功能,有点模仿百度的下拉展示相关搜索 先上个展示图 : 点击进入演示地址,大家可以输入长点的搜索,点击搜索,再输入之前搜索词的前面部分,看是否能展示出来 ...