正解:网络流+对偶图

解题报告:

传送门!

$umm$日常看不懂题系列了$kk$.其实就是说,给定一个$n\cdot n$的网格图,求最小割$QwQ$

然后网格图的话显然是个平面图,又看到数据范围$n\leq 1000$,显然就考虑平面图转对偶图呗

然后好像就没有什么细节了,,,?

对了,$bzoj$上的话要特判1,洛谷上没有这个数据就不用辣$QwQ$

$QwQ$

(在$bzoj$上$T$了,,,应该是常数的问题懒得改了$QAQ$

#include<bits/stdc++.h>
using namespace std;
#define il inline
//#define int long long
#define fi first
#define sc second
#define gc getchar()
#define mp make_pair
#define P pair<int,int>
#define t(i) edge[i].to
#define w(i) edge[i].wei
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=+;
int n,m,ed_cnt,head[N*N],S,T,dis[N*N];
struct ed{int to,nxt,wei;}edge[N*N*];
bool vis[N*N]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il void ad(ri x,ri y,ri z){/*printf("%d -> %d : %d\n",y,x,z);*/edge[++ed_cnt]=(ed){x,head[y],z};head[y]=ed_cnt;}
il int nam(ri x,ri y,ri z){if(!x)return T;if(y>m)return T;if(!y)return S;if(x>n)return S;return (x*m-m+y)*+z;}
il void dij()
{
priority_queue< P,vector<P>,greater<P> >Q;Q.push(mp(,S));memset(dis,,sizeof(dis));
while(!Q.empty())
{
ri nw=Q.top().sc,diss=Q.top().fi;Q.pop();if(vis[nw])continue;vis[nw]=;dis[nw]=diss;
e(i,nw)if(!vis[t(i)])Q.push(mp(dis[nw]+w(i),t(i)));
}
} int main()
{
//freopen("4001.in","r",stdin);freopen("4001.out","w",stdout);
n=read()-;m=read()-;S=;T=n*m*+;
rp(i,,n+){rp(j,,m){ri tmp=read(),pos1=nam(i,j,-),pos2=nam(i-,j,);/*printf("%d ",tmp);*/ad(pos1,pos2,tmp);ad(pos2,pos1,tmp);}/*printf("\n");*/}
//printf("---\n");
rp(i,,n){rp(j,,m+){ri tmp=read(),pos1=nam(i,j,),pos2=nam(i,j-,-);/*printf("%d ",tmp);*/ad(pos1,pos2,tmp);ad(pos2,pos1,tmp);}/*printf("\n");*/}
//printf("---\n");
rp(i,,n){rp(j,,m){ri tmp=read(),pos1=nam(i,j,-),pos2=nam(i,j,);/*printf("%d ",tmp);*/ad(pos1,pos2,tmp);ad(pos2,pos1,tmp);}/*printf("\n");*/}
//printf("---\n");
//printf("---------\n");
//rp(i,1,n-1)rp(j,1,m-1)printf("%d %d (%d,%d)\n",nam(i,j,0),nam(i,j,-1),i,j);
dij();printf("%d\n",dis[T]);
return ;
}
//if(m==1 || n==1) tepan!!!

不开$O2$好像过不去,,,$QAQ$

洛谷$P4001\ [ICPC-Beijing 2006]$狼抓兔子 网络流+对偶图的更多相关文章

  1. [Bzoj1001][BeiJing2006]狼抓兔子(网络流/对偶图)

    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 看到大佬们都是对偶图过的,写了个最大流水过去了QAQ,网络流的无向图直接建双向边( ...

  2. P4001 [BJOI2006]狼抓兔子(对偶图)

    P4001 [BJOI2006]狼抓兔子 最短路+对偶图 看这题最容易想到的就是网络流.Dinic可以过,据说还跑得比正解快. 如果不写网络流,那么需要知道2个前置知识:平面图和对偶图(右转baidu ...

  3. 1001: [BeiJing2006]狼抓兔子(对偶图)

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MBSubmit: 23595  Solved: 5940 Descript ...

  4. bzoj 1001狼抓兔子(对偶图+最短路)最大流

    推荐文章:<浅析最大最小定理在信息学竞赛中的应用>--周冬 题目 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还 ...

  5. 对偶图 && 【BZOJ】1001: [BeiJing2006]狼抓兔子(对偶图+最短路)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1001 可谓惨不忍睹,一下午就在调这题了. 很久以前看到这题是一眼最大流,看到n<=1000,我 ...

  6. 【洛谷4001】 [ICPC-Beijing 2006]狼抓兔子(最小割)

    传送门 洛谷 Solution 直接跑最小割板子就好了. 代码实现 #include<stdio.h> #include<stdlib.h> #include<strin ...

  7. BZOJ1001/LG4001 「ICPC Beijing2006」狼抓兔子 平面图最小割转对偶图最短路

    问题描述 BZOJ1001 LG4001 题解 平面图最小割=对偶图最短路 假设起点和终点间有和其他边都不相交的一条虚边. 如图,平面图的若干条边将一个平面划分为若干个图形,每个图形就是对偶图中的一个 ...

  8. P4001-[ICPC-Beijing 2006]狼抓兔子【对偶图】

    正题 题目链接:https://www.luogu.com.cn/problem/P4001 题目大意 给出一个类似于 的网格图,求起点到终点的最小割. 解题思路 最小割直接跑网络流,然后发现\(di ...

  9. P4001 [ICPC-Beijing 2006]狼抓兔子

    题目地址:P4001 [ICPC-Beijing 2006]狼抓兔子 平面图 边与边只在顶点相交的图. 对偶图 对于一个平面图,都有其对应的对偶图. 平面图被划分出的每一个区域当作对偶图的一个点: 平 ...

随机推荐

  1. Hbase数据模型 行

  2. uva 11916 Emoogle Grid (BSGS)

    UVA 11916 BSGS的一道简单题,不过中间卡了一下没有及时取模,其他这里的100000007是素数,所以不用加上拓展就能做了. 代码如下: #include <cstdio> #i ...

  3. hdu 3329 The Flood (Flood Fill + MFSet)

    Problem - 3329 用pfs,将淹没时间调整回来,然后用并查集,时间倒序插入点. 代码如下: #include <iostream> #include <algorithm ...

  4. iptables 网址转译 (Network Address Translation,NAT)

    当封包流经NAT電腦時,其位址/通訊端口會被修改,以達到改变包目的地(或旅程),或是让目的地误以为包是源自NAT电脑的效果.換言之,对封包执行NAT的电脑,可以成为新包的来源或目的地,或是成为真正来源 ...

  5. HBuider快捷键

    朋友推荐用Hbuilder编辑器,看了下Hbuilder官网和那视频,感觉牛逼哄哄的, 自己也就体验了一下,打开Hbuilder的快捷键列表,每个快捷键都体验了一下,以下展示出来的,每一个都是精华,每 ...

  6. Python--day43--连表查询(重要)

  7. 4-3 调试代码命令 scrapy shell http://blog.jobbole.com/114496/(入口url)

    调试代码命令 scrapy shell http://blog.jobbole.com/114496/(入口url)

  8. vue项目上滑滚动加载更多&下拉刷新

    上滑滚动时获取内容高度.屏幕高度和滚动高度(此处#sslist要为内容是id) 内容高度  let innerHeight = document.querySelector("#sslist ...

  9. Linux下tomcat启动成功但是Windows打不开tomcat网址

    前提条件: 1.Linux和Windows都可以相互ping通. 2.Linux下tomcat可以启动,并且在Linux下可以访问8080 出现的问题: 当我在Windows下访问时,无法连接或者出现 ...

  10. H3C查看CF卡内的文件

    查看CF卡内的文件 <H3C>dir             //查看文件及目录文件 Directory of cf:/ -------------查看的是CF卡的内容      0    ...