BZOJ 2007: [Noi2010]海拔
2007: [Noi2010]海拔
Time Limit: 20 Sec Memory Limit: 552 MB
Submit: 2410 Solved: 1142
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
1
2
3
4
5
6
7
8
Sample Output
【样例说明】
样例数据见下图。
最理想情况下所有点的海拔如上图所示。
对于100%的数据:1 ≤ n ≤ 500,0 ≤ 流量 ≤ 1,000,000且所有流量均为整数。
HINT
Source
网络流 平面图最小割转对偶图最短路
有个性质,就是一定存在一组最优解,是一些点海拔为0,其余点海拔为1,且两类点各形成一个连通块,即产生代价的边为S到T的一个割边集合,代价即为流量和。
为了防止TLE,最好转对偶图做最短路,注意因为原本是有向边,所以转对偶图时也是有固定规则的有向边。

#include <queue>
#include <cstdio> inline int nextChar(void) {
static const int siz = ;
static char buf[siz];
static char *hd = buf + siz;
static char *tl = buf + siz;
if (hd == tl)
fread(hd = buf, , siz, stdin);
return *hd++;
} inline int nextInt(void) {
register int ret = ;
register int neg = false;
register int bit = nextChar();
for (; bit < ; bit = nextChar())
if (bit == '-')neg ^= true;
for (; bit > ; bit = nextChar())
ret = ret * + bit - ;
return neg ? -ret : ret;
} const int inf = 1e9;
const int siz = ; int n;
int s, t;
int edges;
int hd[siz];
int to[siz];
int nt[siz];
int vl[siz];
int dis[siz]; inline void add(int u, int v, int w) {
nt[edges] = hd[u];
to[edges] = v;
vl[edges] = w;
hd[u] = edges++;
} struct pair {
int x, y;
pair(void) {};
pair(int a, int b) :
x(a), y(b) {};
inline friend bool operator <
(const pair &a, const pair &b) {
return a.x > b.x;
}
}; std::priority_queue<pair> h; inline int Dijkstra(void) {
h.push(pair(dis[s] = , s));
while (!h.empty()) {
pair p = h.top(); h.pop();
if (dis[p.y] != p.x)continue;
if (p.y == t)return dis[p.y];
for (int i = hd[p.y]; ~i; i = nt[i])
if (dis[to[i]] > dis[p.y] + vl[i])
h.push(pair(dis[to[i]] = dis[p.y] + vl[i], to[i]));
}
return dis[t];
} inline int pos(int x, int y) {
if (x == || y == n + )return s;
if (y == || x == n + )return t;
return (x - ) * n + y;
} signed main(void) {
n = nextInt();
s = , t = n * n + ;
for (int i = s; i <= t; ++i)hd[i] = -;
for (int i = s; i <= t; ++i)dis[i] = inf;
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
add(pos(i, j), pos(i + , j), nextInt());
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
add(pos(i, j + ), pos(i, j), nextInt());
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
add(pos(i + , j), pos(i, j), nextInt());
for (int i = ; i <= n; ++i)
for (int j = ; j <= n; ++j)
add(pos(i, j), pos(i, j + ), nextInt());
printf("%d\n", Dijkstra());
}
@Author: YouSiki
BZOJ 2007: [Noi2010]海拔的更多相关文章
- [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...
- BZOJ.2007.[NOI2010]海拔(最小割 对偶图最短路)
题目链接 想一下能猜出,最优解中海拔只有0和1,且海拔相同的点都在且只在1个连通块中. 这就是个平面图最小割.也可以转必须转对偶图最短路,不然只能T到90分了..边的方向看着定就行. 不能忽略回去的边 ...
- bzoj 2007 [Noi2010]海拔——最小割转最短路
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2007 一个点的高度一定不是0就是1.答案一定形如一个左上角的连通块全是0的点.一个右下角的连 ...
- bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
上来就跑3e5的最大流--脑子抽了 很容易看出,每个地方的海拔都是0或1因为再高了没有意义,又,上去下来再上去没有意义,所以最后一定是从s连着一片0,剩下连着t一片1,然后有贡献的就是01交接的那些边 ...
- 【BZOJ 2007】 2007: [Noi2010]海拔 (平面图转对偶图+spfa)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2504 Solved: 1195 Description YT市 ...
- 2007: [Noi2010]海拔
2007: [Noi2010]海拔 https://www.lydsy.com/JudgeOnline/problem.php?id=2007 分析: 平面图最小割. S在左下,T在右上,从S到T的一 ...
- 2007: [Noi2010]海拔 - BZOJ
Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)× ...
- 【BZOJ】2007: [Noi2010]海拔(平面图转对偶图)
题目 传送门:QWQ 分析 左上角是0,右下角是1.那么大概整张图是由0 1构成的. 那么我们要找到0和1的分界线,值就是最小割. 然后变成求原图最小割. 考虑到此题是平面图,那么就转成对偶图跑最短路 ...
- BZOJ 2007 NOI2010 海拔高度 最小减产计划
标题效果:YT城市是一个精心规划的城市.这个城市是东西向和南北向干道成n×n地区性.简单.可以YT作为一个城市广场,每个区域也可被视为一个正方形.因此,.YT市中含有(n+1)×(n+1)交叉口和2n ...
随机推荐
- Lind.DDD敏捷领域驱动框架~介绍
回到占占推荐博客索引 最近觉得自己的框架过于复杂,在实现开发使用中有些不爽,自己的朋友们也经常和我说,框架太麻烦了,要引用的类库太多:之前架构之所以这样设计,完全出于对职责分离和代码附复用的考虑,主要 ...
- ORM是什么?如何理解ORM
一.ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术.简单的说,ORM是通过使 ...
- 12款简化 Web 开发的 JavaScript 开发框架
前端框架简化了开发过程中,像 Bootstrap 和 Foundation 就是前端框架的佼佼者.在这篇文章了,我们编制了一组新鲜的,实用的,可以帮助您建立高质量的 Web 应用程序的 JavaScr ...
- 在Android中,使用Kotlin的 API请求简易方法
原文标题:API request in Android the easy way using Kotlin 原文链接:http://antonioleiva.com/api-request-kotli ...
- Android Weekly Notes Issue #220
Android Weekly Issue #220 August 28th, 2016 Android Weekly Issue #220 ARTICLES & TUTORIALS Manag ...
- Hibernate 系列 08 - 对象识别机制
目录导读: Hibernate 系列 学习笔记 目录 本篇目录: 为了区别不同的对象,有两种识别方法: 1. 内存地址识别(“==”号识别) 2. equals()和hashCode()识别 1. 以 ...
- linux基本知识1
ls命令: -l:长格式 文件类型:第1位 -:普通文件 d:目录文件 b:块设备文件(block) c:字符设备文件(character) l:符号链接文件(symbolic link file) ...
- android 闪屏还是会出现黑屏问题
public class SplashActivity extends Activity{ @Override protected void onCreate(Bundle savedInstance ...
- Chrome Developer Tools:Timeline Panel说明
一.Timeline panel 概况 Timeline工具栏可以详细检测出Web应用在加载过程中,时间花费情况的概览.这些应用包括下载资源,处理DOM事件, 页面布局渲染或者向屏幕绘制元素. 如下图 ...
- IT人士怎样的休息方式才高效
为什么你睡了11个小时仍然觉得疲累? 为什么你花了好几万去岛国度假并没有增加生活的热情? 都说要去KTV,去夜店,去游乐园就能忘掉不快,更带劲地开始新的一天,但是尽兴归来心里只剩空虚? 我们真的明白休 ...