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] ...
随机推荐
- SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用
通常在我们的项目中,都会涉及到母版页的定制.并且必不可少的,需要配合以一套自己的JavaScript框架和CSS样式.你有没有遇到过这样的情况呢,在开发环境和UAT时都还算顺利,但是当最终部署到生产服 ...
- 后台运行程序screen or nohup
后台运行 方法1 & 方法2:screen screen –S lnmp à起个名字 进去后运行程序 Ctrl+ad à退出lnmp屏幕 Scree –ls à查看 Screen –r x ...
- jboss的时区问题
默认情况下,jboss启动时,使用的时区是“+0:00”区,而中国所在的时间为"+8:00"区(所谓的东8区),最终java取当前时间时,总比北京时间慢8个小时 解决办法: 新建一 ...
- 文本比较算法Ⅱ——Needleman/Wunsch算法
在"文本比较算法Ⅰ--LD算法"中介绍了基于编辑距离的文本比较算法--LD算法. 本文介绍基于最长公共子串的文本比较算法--Needleman/Wunsch算法. 还是以实例说明: ...
- [MCSM] Slice Sampler
1. 引言 之前介绍的MCMC算法都具有一般性和通用性(这里指Metropolis-Hasting 算法),但也存在一些特殊的依赖于仿真分布特征的MCMC方法.在介绍这一类算法(指Gibbs samp ...
- Bootstrap系列 -- 4. 文本内容强调
一. 文本强调基本样式 .text-muted:提示,使用浅灰色(#999) .text-primary:主要,使用蓝色(#428bca) .text-success:成功,使用浅绿色(#3c763d ...
- Python 处理数据库返回结果
游标执行后返回的结果都只是数据,但是不带有列名标识.这里需要处理2个问题: 将返回的数据映射到每一列上 当返回的结果很大的时候,需要使用迭代器来提升性能. 解决上面的2个问题,在python里面可以采 ...
- go linux 学习记录
1 yum install mercurial 安装mercurial包 2 yum install git 安装git包 3 yum install gcc 安装gcc 4 然后就可以下载gola ...
- 东大OJ-快速排序
1236: Simple Sort 时间限制: 1 Sec 内存限制: 128 MB 提交: 195 解决: 53 [提交][状态][讨论版] 题目描述 You are given n ...
- Collections的应用
Collection : 接口 Collections : 集合的工具类 Arrays (数组的工具类) 只能操作list集合 说出Collection和Collections 的区别 ...