_bzoj1001 [BeiJing2006]狼抓兔子【平面图】
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1001
顺便推荐一个ppt,里面有对平面图的介绍:浅析最大最小定理在信息学竞赛中的应用。
这里直接求最小割肯定会T,所以应把原图看成一张平面图,ppt中说该平面图对应的对偶图的每一个环对应原图的一个割,这点有些不理解,不过不影响做这一道题。想象一下,在最外面那个无限大的平面,由左上角朝右下角连一条附加的边,这么做就多了一个附加面,设这条附加的边的权值为 -inf,那么最小割一定包含这一条边。把这条边去掉,就成了求一个最短路的问题了。
#include <cstdio>
#include <cstring> const int maxn = 1005, maxnd = maxn * maxn << 1, maxe = maxn * maxn * 3; int n, m, S, T, special = 2147483647, t1, t2, t3;
int head[maxnd], to[maxe << 1], next[maxe << 1], w[maxe << 1], lb;
char ch;
bool inq[maxnd];
int que[maxnd], h, head_, tail, d[maxnd]; inline void ist(int aa, int ss, int ww) {
to[lb] = ss;
next[lb] = head[aa];
head[aa] = lb;
w[lb] = ww;
++lb;
}
inline void readint(int & rt) {
while ((ch = getchar()) < 48);
rt = ch - 48;
while ((ch = getchar()) > 47) {
rt = rt * 10 + ch - 48;
}
} int main(void) {
//freopen("in.txt", "r", stdin);
memset(head, -1, sizeof head);
memset(next, -1, sizeof next);
readint(n); readint(m);
if (n == 1 || m == 1) {
while (scanf("%d", &t1) != EOF) {
special = special < t1? special: t1;
}
printf("%d\n", special);
return 0;
}
S = (n - 1) * (m - 1) * 2 + 1;
T = S + 1;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j < m; ++j) {
t2 = (i - 1) * (m - 1) * 2 + j * 2;
t1 = t2 - (m - 1) * 2 - 1;
t1 = t1 > 0? t1: T;
t2 = t2 < S? t2: S;
scanf("%d", &t3);
ist(t1, t2, t3);
ist(t2, t1, t3);
}
}
for (int i = 1; i < n; ++i) {
t2 = (i - 1) * (m - 1) * 2 + 1;
scanf("%d", &t3);
ist(S, t2, t3);
ist(t2, S, t3);
for (int j = 2; j < m; ++j) {
t1 = (i - 1) * (m - 1) * 2 + (j - 1) * 2;
t2 = t1 + 1;
scanf("%d", &t3);
ist(t1, t2, t3);
ist(t2, t1, t3);
}
t1 = i * (m - 1) * 2;
scanf("%d", &t3);
ist(t1, T, t3);
ist(T, t1, t3);
}
for (int i = 1; i < n; ++i) {
for (int j = 1; j < m; ++j) {
t2 = (i - 1) * (m - 1) * 2 + j * 2;
t1 = t2 - 1;
scanf("%d", &t3);
ist(t1, t2, t3);
ist(t2, t1, t3);
}
} memset(d, 0x3c, sizeof d);
que[tail++] = S;
inq[S] = true;
d[S] = 0;
while (head_ != tail) {
h = que[head_++];
if (head_ == T) {
head_ = 0;
}
inq[h] = false;
for (int j = head[h]; j != -1; j = next[j]) {
if (d[to[j]] > d[h] + w[j]) {
d[to[j]] = d[h] + w[j];
if (!inq[to[j]]) {
inq[to[j]] = true;
que[tail++] = to[j];
if (tail == T) {
tail = 0;
}
}
}
}
}
printf("%d\n", d[T]);
return 0;
}
_bzoj1001 [BeiJing2006]狼抓兔子【平面图】的更多相关文章
- bzoj 1001: [BeiJing2006]狼抓兔子 平面图最小割
平面图跑最大流 可以转换为其对偶图跑最短路 一个环对应一个割 找到最小环(即最短路)极为所求,注意辅助边的建立 加入读入优化 不过时间还是一般 估计是dij写的不好 大神勿喷~~~ /*** ...
- BZOJ 1001 [BeiJing2006] 狼抓兔子(平面图最大流)
题目大意 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的.而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- 【BZOJ】1001: [BeiJing2006]狼抓兔子 Dinic算法求解平面图对偶图-最小割
1001: [BeiJing2006]狼抓兔子 Description 左上角点为(1,1),右下角点为(N,M)(上图中N=4,M=5).有以下 三种类型的道路 1:(x,y)<==>( ...
- [BZOJ1001][BeiJing2006]狼抓兔子(最小割转最短路|平面图转对偶图)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 31805 Solved: 8494[Submit][ ...
- BZOJ 1001: [BeiJing2006]狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 20029 Solved: 4957[Submit][ ...
- BZOJ1001: [BeiJing2006]狼抓兔子 [最小割 | 对偶图+spfa]
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 19528 Solved: 4818[Submit][ ...
- BZOJ 1001: [BeiJing2006]狼抓兔子(最短路)
平面图的最小割转化为对偶图的最短路(资料:两极相通——浅析最大最小定理在信息学竞赛中的应用) ,然后DIJKSTRA就OK了. ------------------------------------ ...
- BZOJ 1001: [BeiJing2006]狼抓兔子【最大流/SPFA+最小割,多解】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MBSubmit: 23822 Solved: 6012[Submit][ ...
- BZOJ1001: [BeiJing2006]狼抓兔子【最短路+对偶图】
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Se ...
随机推荐
- 深信服:Weblogic集群负载均衡技术解决方案
深信服应用交付产品替换集群中的Master节点,以双机模式部署接入,为Cluster 内的服务器提供应用交换服务,结合健康检查和业务特点,提供十几种负载均衡算法组合,满足多种生产环境下的业务需求. ...
- hdoj 3351 Seinfeld 【栈的简单应用】
Seinfeld Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- 【Mongodb教程 第十五课 】MongoDB 限制记录
Limit() 方法 要限制 MongoDB 中的记录,需要使用 limit() 方法. limit() 方法接受一个数字型的参数,这是要显示的文档数. 语法: limit() 方法的基本语法如下 & ...
- React Native入门——布局实践:开发京东client首页(一)
有了一些对React Native开发的简单了解,让我们从实战出发.一起来构建一个简单的京东client. 这个client是仿照之前版本号的京东client开发的Android版应用,来源于CSDN ...
- BestCoder Round #2 1001 TIANKENG’s restaurant
不得不说,bastcoder是个hack游戏啊.!. 题意:求最少要多少张椅子才干让全部来的客人有地方坐!! 就是一个区间的处理吧!!!和HDU 1556 我待水似流年.流年待我似水神似! ..! ...
- Spring MVC @ResponseBody响应中文乱码
问题:在前端通过get请求服务端返回String类型的服务时,会出现中文乱码问题 原因:由于spring默认对String类型的返回的编码采用的是 StringHttpMessageConverter ...
- the first week study
1.In 1989, a man named Guido create "python" as a kind of computer languages. And now we u ...
- 如何用css给博客换一个好看的样式
第一步:点击设置,将如下代码复制到页面定制css代码 h3 { color: #fff; background-color: #008eb7; -moz-border-radius: 3px; bor ...
- android抓log
1.Logcat(能截取除了Kernel以外的所有Log信息),连接USB到电脑上,执行如下命令:User版本也可以使用adb logcat –v time >c:\ logcat.txtadb ...
- Android大牛的博客
1 谦虚的天下:http://www.cnblogs.com/qianxudetianxia/ 2 csdn博文精选:http://www.csdn.net/article/2011-08-30/30 ...