Bzoj2007 [Noi2010]海拔
Time Limit: 20 Sec Memory Limit: 552 MB
Submit: 2380 Solved: 1130
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的两个联通块,使得01交界处边权和最小。
↑似乎是最小割。
看一下数据范围,网络流肯定会T,那么尝试将最小割转为最短路。
从地图东北方到西南方(方向,不一定要到角上)找一条路径,使得费用最小。
在别的博客看到了神奇的不显式建边的写法,果断学学学。
/*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n;
int mp[mxn][mxn][];
int dis[mxn][mxn];
struct dist{
int x,y,dis;
bool operator < (const dist b) const{
return dis>b.dis;
}
};
priority_queue<dist>q;
int ans=1e9;
void insert(int x,int y,int d){
if(d<dis[x][y]){
dis[x][y]=d;
q.push((dist){x,y,d});
}
if(y==)ans=min(ans,d+mp[x][y][]);
if(x==n)ans=min(ans,d+mp[x+][y][]);
}
int Dij(){
int i,j;
for(i=;i<=n;i++)insert(,i,mp[][i][]);
for(j=;j<=n;j++)insert(j,n,mp[j][n+][]);
while(!q.empty()){
dist now=q.top();q.pop();
if(now.dis>dis[now.x][now.y])continue;
int x=now.x;int y=now.y;
if(x>){
insert(x-,y,now.dis+mp[now.x][now.y][]);
}
if(y>){
insert(x,y-,now.dis+mp[now.x][now.y][]);
}
if(x<n){
insert(x+,y,now.dis+mp[now.x+][now.y][]);
}
if(y<n){
insert(x,y+,now.dis+mp[now.x][now.y+][]);
}
}
return ;
}
int main(){
int i,j;
n=read();
for(i=;i<=n+;i++)
for(j=;j<=n;j++)mp[i][j][]=read();//从西到东
for(i=;i<=n;i++)
for(j=;j<=n+;j++)mp[i][j][]=read();//从北到南
for(i=;i<=n+;i++)
for(j=;j<=n;j++)mp[i][j][]=read();//从东到西
for(i=;i<=n;i++)
for(j=;j<=n+;j++)mp[i][j][]=read();//从南到北
memset(dis,0x3f,sizeof dis);
Dij();
cout<<ans<<endl;
return ;
}
Bzoj2007 [Noi2010]海拔的更多相关文章
- Bzoj2007 [Noi2010]海拔(平面图最短路)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2742 Solved: 1318[Submit][Status] ...
- [BZOJ2007][NOI2010]海拔(对偶图最短路)
首先确定所有点的海拔非0即1,问题转化成裸的平面图最小割问题,进而转化成对偶图最短路(同BZOJ1002). 这题的边是有向的,所以所有边顺时针旋转90度即可. 如下图(S和T的位置是反的). #in ...
- bzoj2007 NOI2010 海拔(对偶图)
80分(最小割)思路 先考虑如果没有题目中东南角为\(1\)那个限制的话会怎样. 那么只要让每个点的海拔都是\(0\)就行了.这样不论怎样走,最后的答案都是0. 然后再考虑那个东南角为\(1\)的限制 ...
- BZOJ2007 [Noi2010]海拔 【平面图最小割转对偶图最短路】
题目链接 BZOJ2007 题解 这是裸题啊,,要是考试真的遇到就好了 明显是最小割,而且是有来回两个方向 那么原图所有向右的边转为对偶图向下的边 向左的边转为向上 向下转为向左 向上转为向右 然后跑 ...
- bzoj千题计划129:bzoj2007: [Noi2010]海拔
http://www.lydsy.com/JudgeOnline/problem.php?id=2007 1.所有点的高度一定在0~1之间, 如果有一个点的高度超过了1,那么必定会有人先上坡,再下坡, ...
- BZOJ2007 NOI2010 海拔 平面图转对偶图 最小割
题面太长啦,请诸位自行品尝—>海拔 分析: 这是我见过算法比较明显的最小割题目了,很明显对于某一条简单路径,海拔只会有一次变换. 而且我们要最终使变换海拔的边权值和最小. 我们发现变换海拔相当于 ...
- BZOJ2007——[Noi2010]海拔
1.题意:一个裸的最小割 2.分析:直接转成对偶图最短路就好了,水爆了!(雾) #include <queue> #include <cstdio> #include < ...
- 【BZOJ2007】[Noi2010]海拔 对偶图最短路
[BZOJ2007][Noi2010]海拔 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看 ...
- BZOJ 2007: [Noi2010]海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2410 Solved: 1142[Submit][Status] ...
随机推荐
- Dell 服务器做Raid
Dell 服务器做Raid DELL R720 服务器 RAID阵列卡配置介绍 (H310) 关于 RAID 5 与热备份(Hot Spare) 在不同RAID组间使用热备盘——Global Hot ...
- matlab jet color mapping C / C++ / VC 实现
在matlab中调用imagesc()将一幅灰阶图像以彩色显示时,默认使用的color mapping是Jet,其color bar 为: Jet的color mapping图为: Color map ...
- 工作随笔——pre-commit钩子限制日志长度和提交的文件类型
2014-09-18:解决Subversion edge 的hook中文乱码问题 近期检查SVN时发现备份好的文件体积异常庞大.才跑2个月备份出来的大小就有4G多.仔细查询发现很多很多IDE自动生成的 ...
- denounce函数:Javascript中如何应对高频触发事件
在DOM Event的世界中,以scroll.resize.mouseover等为代表的高频触发事件显得有些与众不同.通常,DOM事件只有在明确的时间点才会被触发,比如被点击,比如XMLHttpReq ...
- GitHub 上一份很受欢迎的前端代码优化指南-强烈推荐收藏
看到一份很受欢迎的前端代码指南,根据自己的理解进行了翻译,但能力有限,对一些JS代码理解不了,如有错误,望斧正. HTML 语义化标签 HTML5 提供了很多语义化元素,更好地帮助描述内容.希望你能从 ...
- JavaScript函数劫持
一.为什么我会写这篇文章 这篇文章其实是在一个偶然的机会下发现了居然有JavaScript劫持这种东西,虽然这种东西在平时用的比较少,而且一般实用价值不高,但是在一些特殊的情况下还是要使用到的,所以在 ...
- Redis Sentinel:集群Failover解决方案(转载)
本文转载自:http://shift-alt-ctrl.iteye.com/blog/1884370 文中的配置例子,还有failover过程中触发的订阅事件具有很好的参考价值. Redis sent ...
- 一起来学node.js吧 node school简介
node.js这几年火爆的简直丧心病狂,去lagou.com查查node.js的职位,那叫一个多. 要说火爆到什么程度,竟然有一个网站专门去教大家学习node.js, Node School. 进去逛 ...
- 模拟发送http请求
1.httpie 2.postman:Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件. 3.fiddler
- java之自定义回调接口
本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...