狼抓兔子(平面图转对偶图)
狼抓兔子(平面图转对偶图)
面对下面这样一个网格的地形:
道路上的权值表示这条路上最多能够通过的兔子数,道路是无向的. 左上角和右下角为兔子的两个窝,开始时所有的兔子都聚集在左上角(1,1)的窝里,现在它们要跑到右下角(N,M)的窝中去,狼王开始伏击这些兔子.当然为了保险起见,如果一条道路上最多通过的兔子数为K,狼王需要安排同样数量的K只狼,才能完全封锁这条道路,你需要帮助狼王安排一个伏击方案,使得在将兔子一网打尽的前提下,参与的狼的数量要最小。因为狼还要去找喜羊羊麻烦。
没什么好说的,放张图就知道了:
#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
using namespace std;const int maxn=3e6, INF=1e9;
int n, m, src, dst;
struct Edge{int to, nxt, v;
}e[maxn*2];
int fir[maxn], cnte;
void addedge(int x, int y, int v){Edge &ed=e[++cnte];ed.to=y; ed.nxt=fir[x]; ed.v=v; fir[x]=cnte;Edge &ed2=e[++cnte];ed2.to=x; ed2.nxt=fir[y]; ed2.v=v; fir[y]=cnte;
}int dis[maxn], num[maxn];
struct cmp{bool operator ()(int x, int y){ return dis[x]>dis[y]; }
};
priority_queue<int, vector<int>, cmp> q;
int dijkstra(){for (int i=1; i<=dst; ++i) dis[i]=INF;int u, v; q.push(src); num[src]=1;for (int i=0; i<=dst; ++i){while (num[q.top()]>1) --num[q.top()], q.pop();u=q.top(); q.pop(); --num[u];for (int j=fir[u]; ~j; j=e[j].nxt){v=e[j].to;if (dis[u]+e[j].v<dis[v]){dis[v]=dis[u]+e[j].v;++num[v]; q.push(v);}}}return dis[dst];
}int main(){memset(fir, -1, sizeof(fir));scanf("%d%d", &n, &m); int t; src=0; dst=n*m+1;for (int i=1; i<m; ++i){ scanf("%d", &t); addedge(src, i*2, t); }for (int i=1, cur=1; i<n-1; ++i)for (int j=1; j<m; ++j, cur+=2){scanf("%d", &t);addedge(cur, cur+2*m-1, t);}for (int i=1; i<m; ++i){ scanf("%d", &t); addedge(dst-2*(m-i), dst, t); }for (int i=1, cur=2; i<n; ++i){scanf("%d", &t); addedge(cur-1, dst, t);for (int j=1; j<m-1; ++j, cur+=2){scanf("%d", &t);addedge(cur, cur+1, t);}scanf("%d", &t); addedge(0, cur, t); cur+=2;}for (int i=1, cur=1; i<n; ++i)for (int j=1; j<m; ++j, cur+=2){scanf("%d", &t); addedge(cur, cur+1, t); }printf("%d\n", dijkstra());return 0;
}
转载于:https://www.cnblogs.com/MyNameIsPc/p/9147130.html
狼抓兔子(平面图转对偶图)相关推荐
- 1001: [BeiJing2006]狼抓兔子(对偶图)
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 23595 Solved: 5940 Descrip ...
- BZOJ1001 狼抓兔子 终于过了!
时间来不及了,先贴代码吧!有时间再写. 好苦逼啊,WA了若干次,还有一次RE,一次TLE. 虽然主要运用的算法和资料都由师兄提供了.还是太弱了,太天真了. 首先,数据范围就WA了,RE了,TLE了. ...
- P2030 - 【BJOI2006】狼抓兔子
P2030 - [BJOI2006]狼抓兔子 Description 八中OJ上本题链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1001 现 ...
- 【BZOJ1001】狼抓兔子
[BZOJ1001]狼抓兔子 题面 bzoj 题解 懒得平面图转对偶图了,直接最小割板子加优化. #include <iostream> #include <cstdio> # ...
- 【bzoj1001】【狼抓兔子】
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 12719 Solved: 3017 [Submit][ ...
- bzoj1001/BJOI2006 狼抓兔子
1001: [BeiJing2006]狼抓兔子(传送门) 图论新知识..没学过.. 平面图最小割等于对偶图的最短路 详见课件:http://wenku.baidu.com/view/8f1fde586 ...
- 【BZOJ1001】狼抓兔子题解
BZOJ1001: [BeiJing2006]狼抓兔子 Description 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的,而且现在的兔子还 ...
- bzoj 1001狼抓兔子
1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec Memory Limit: 162 MB Submit: 15622 Solved: 3771 [ Sub ...
- [bzoj1001]狼抓兔子
现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: 左上角点 ...
最新文章
- Android学习笔记-Wifi网络操作
- latex 公式转图片
- web前后台数据交互
- java data是什么文件_如何用java实现 读取一个data类型文件 并显示出来(随便选择一种类型txt或者word)...
- Java中的使用了未经检查或不安全的操作
- Kafka的通讯协议
- PHP关闭$_ENV后获取服务器参数的办法
- 一文详解opencv摄像头数字识别
- 345取出值怎么算角度_资料分析怎么提分?这几个公式你必须会!
- 【个人笔记】OpenCV4 C++ 图像处理与视频分析 09课
- Redis 面试一定要知道的 3 个 问题!
- 数学建模——蒙特卡罗模型
- 文件IO(IO编程)
- 整车行业 SAP APO 开发备忘(刘欣)
- Android SDCard中写入文件
- 工程力学(1)-公理以及简单的受力分析
- 密码学hash函数-SHA256-512
- Android查看手机位置,android-查找手机的位置
- Lumen超全功能知识点来了,ue5初学者们必看
- 百度搜索稳定性问题分析的故事(上)
热门文章
- 《Linux菜鸟入门》认识linux系统
- 右键菜单打开文件所在文件夹的插件EasyExplore
- ASP.NET 5系列教程 (四):向视图中添加服务和发布应用到公有云
- java 实现接口后重写方法报错
- 29、C++ Primer 4th 笔记,异常处理
- Rails全局处理Error
- 压缩SQL数据库日志-收缩SQL数据库日志-备份SQL数据库日志-删除SQL数据库日志
- Mysql 索引优化分析_如何优化MySQL的性能?从索引方面优化案例分析
- CAN总线简明易懂教程(一)
- 频谱细化(补零、zfft、czt)