BZOJ 2007 海拔(平面图最小割-最短路)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2007
题意:给出一个n*n的格子,那么顶点显然有(n+1)*(n+1)个。每两个相邻顶点之间有两条边,这两条边是有向的,边上有权值。。左上角为源点,右下角为汇点,求s到t的最小割。
思路:很明显这是一个平面图,将其转化为最
短路。我们将s到t之间连一条边,左下角为新图的源点S,右上角区域为新图的终点T,并且为每个格子编号。由于边是有向的,我们就要分析下这条边应该是哪
个点向哪个点的边。假设下图的红线是答案。比如<S,7>的那条边,必然是从上向下的,<6,5>那条边必然是从下向上
的,<9,6>那条边必然是从左向右的,另外就是从右向左的边,必然是上面的格子到下面的格子。
vector<pair<int,int> > g[N];
int n,dis[N];
int get(int i,int j)
{
if(j==0||i==n+1) return 0;
if(i==0||j==n+1) return n*n+1;
return (i-1)*n+j;
}
priority_queue<pair<int,int> > Q;
int SPFA()
{
int i,s=0,t=n*n+1;
FOR0(i,t+1) dis[i]=INF;
dis[s]=0; Q.push(MP(0,s));
int u,v,c;
pair<int,int> p;
while(!Q.empty())
{
p=Q.top();
Q.pop();
u=p.second;
if(u==t) return -p.first;
FOR0(i,SZ(g[u]))
{
v=g[u][i].first;
c=g[u][i].second;
if(dis[v]>dis[u]+c)
{
dis[v]=dis[u]+c;
Q.push(MP(-dis[v],v));
}
}
}
}
int main()
{
RD(n);
int i,j,x,s,t;
for(i=1;i<=n+1;i++) for(j=1;j<=n;j++)
{
RD(x);
t=get(i-1,j);
s=get(i,j);
g[s].pb(MP(t,x));
}
for(i=1;i<=n;i++) for(j=1;j<=n+1;j++)
{
RD(x);
s=get(i,j-1);
t=get(i,j);
g[s].pb(MP(t,x));
}
for(i=1;i<=n+1;i++) for(j=1;j<=n;j++)
{
RD(x);
s=get(i-1,j);
t=get(i,j);
g[s].pb(MP(t,x));
}
for(i=1;i<=n;i++) for(j=1;j<=n+1;j++)
{
RD(x);
t=get(i,j-1);
s=get(i,j);
g[s].pb(MP(t,x));
}
PR(SPFA());
}
BZOJ 2007 海拔(平面图最小割-最短路)的更多相关文章
- BZOJ 2007 海拔(平面图最小割转对偶图最短路)
首先注意到,把一个点的海拔定为>1的数是毫无意义的.实际上,可以转化为把这些点的海拔要么定为0,要么定为1. 其次,如果一个点周围的点的海拔没有和它相同的,那么这个点的海拔也是可以优化的,即把这 ...
- bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路)
bzoj2007/luoguP2046 海拔(平面图最小割转对偶图最短路) 题目描述: bzoj luogu 题解时间: 首先考虑海拔待定点的$h$都应该是多少 很明显它们都是$0$或$1$,并且所 ...
- BZOJ2007/LG2046 「NOI2010」海拔 平面图最小割转对偶图最短路
问题描述 BZOJ2007 LG2046 题解 发现左上角海拔为 \(0\) ,右上角海拔为 \(1\) . 上坡要付出代价,下坡没有收益,所以有坡度的路越少越好. 所以海拔为 \(1\) 的点,和海 ...
- bzoj 1001 狼抓兔子 —— 平面图最小割(最短路)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1001 平面图最小割可以转化成最短路问题: 建图时看清楚题目的 input ... 代码如下: ...
- Vijos1734 NOI2010 海拔 平面图最小割
建立平面图的对偶图,把最小割转化成最短路问题 Dijkstra算法堆优化 (被输入顺序搞WA了好几次T_T) #include <cstdio> #include <cstring& ...
- [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...
- 【BZOJ2007】【NOI2010】海拔(最小割,平面图转对偶图,最短路)
[BZOJ2007][NOI2010]海拔(最小割,平面图转对偶图,最短路) 题面 BZOJ 洛谷 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域. ...
- B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij
B20J_2007_[Noi2010]海拔_平面图最小割转对偶图+堆优化Dij 题意:城市被东西向和南北向的主干道划分为n×n个区域.城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向 ...
- 【平面图最小割】BZOJ2007-[NOI2010]海拔
[题目大意] 城市被东西向和南北向的主干道划分为n×n个区域,包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路.现得到了每天每条道路两个方向的人流量.每一个交叉路口都有海拔,每向上爬h ...
随机推荐
- PAT乙级 1008. 数组元素循环右移问题 (20)
1008. 数组元素循环右移问题 (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 一个数组A中存有N(N>0)个整数,在不允 ...
- HTML5,超级链接
<a href="http://h123.date">预算控制系统</a><<br><a href="2.html&quo ...
- ASP.NET MVC 返回JsonResult序列化内容超出最大限制报错的解决办法
在使用MVC的时候我们经常会在Controller的Action方法中返回JsonResult对象,但是有时候你如果序列化的对象太大会导致JsonResult从Controller的Action返回后 ...
- dota玩家与英雄契合度的计算器,python语言scrapy爬虫的使用
首发:个人博客,更新&纠错&回复 演示地址在这里,代码在这里. 一个dota玩家与英雄契合度的计算器(查看效果),包括两部分代码: 1.python的scrapy爬虫,总体思路是pag ...
- win7 dos命令窗口内容显示不全解决办法--将命令执行结果输出到一个文件中
执行命令:命令 >>某某路径\文件全名
- 利用arcigs制作出 源解析要用的ASCII文件
准备:1.确定好模拟区域范围,精度,行列数 2.确定好源解析的城市规划 思路: 1.全国省级图+本地市县图-->合成一张区域图(联合) 合成之后,添加一个字段,一个数字类型字段 ...
- Linux软件管理——yum命令详解
yum install <softwarename> #安装指定软件 yum remove <softwarename> #卸载指定软件 yum update <soft ...
- UVA 12950 : Even Obsession(最短路Dijkstra)
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- ajax 无刷新分页
//ajax 无刷新分页1.前台要做的 滑动时 当前page+1,通过page ajax请求后台接口获取数据将数据进行拼装;2.后台要做的 做分页接口返回json数据前台判断触发请求条件: var p ...
- 在IE6下使用filter设置png背景
今天帮别人解决问题学会了一个在IE6下使用filter设置png背景,具体css写法如下: .login_form_wrap { width: 778px; height: 360px; backgr ...