海拔(bzoj 2007)
Description
Input
Output
Sample Input
1
2
3
4
5
6
7
8
Sample Output
/*
首先可以大胆推一波结论:海拔高度非0即1。
那么即相当于找一条分界线,把图分成两部分,平面图最小割!
但是这个图是有向图,所以正反都要建边,在纸上画一画就是到怎么搞了。
*/
#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
#define N 1000010
using namespace std;
int head[N],dis[N],vis[N],n,S,T,cnt;
struct node{int v,w,pre;}e[N*];
struct Node{
int pos,dis;
bool operator< (const Node&x) const{
return dis>x.dis;
}
};priority_queue<Node> q;
void add(int u,int v,int w){
e[++cnt].v=v;e[cnt].w=w;e[cnt].pre=head[u];head[u]=cnt;
}
int Dij(){
memset(dis,/,sizeof(dis));
q.push((Node){S,});dis[S]=;
while(!q.empty()){
int u=q.top().pos;q.pop();
if(vis[u]) continue;
vis[u]=;
for(int i=head[u];i;i=e[i].pre)
if(dis[e[i].v]>dis[u]+e[i].w){
dis[e[i].v]=dis[u]+e[i].w;
q.push((Node){e[i].v,dis[e[i].v]});
}
}
return dis[T];
}
int id(int x,int y){
if(!y||x==n+) return S;
if(!x||y==n+) return T;
return (x-)*n+y;
}
int main(){
scanf("%d",&n);
S=;T=n*n+;
int x;
for(int i=;i<=n;i++) for(int j=;j<=n;j++) scanf("%d",&x),add(id(i+,j),id(i,j),x);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) scanf("%d",&x),add(id(i,j),id(i,j+),x);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) scanf("%d",&x),add(id(i,j),id(i+,j),x);
for(int i=;i<=n;i++) for(int j=;j<=n;j++) scanf("%d",&x),add(id(i,j+),id(i,j),x);
printf("%d",Dij());
return ;
}
海拔(bzoj 2007)的更多相关文章
- [BZOJ 2007] [Noi2010] 海拔 【平面图最小割(对偶图最短路)】
题目链接:BZOJ - 2007 题目分析 首先,左上角的高度是 0 ,右下角的高度是 1.那么所有点的高度一定要在 0 与 1 之间.然而选取 [0, 1] 的任何一个实数,都可以用整数 0 或 1 ...
- BZOJ 2007: [Noi2010]海拔
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2410 Solved: 1142[Submit][Status] ...
- BZOJ 2007 海拔
http://www.lydsy.com/JudgeOnline/problem.php?id=2007 思路: 显然海拔是一片0,另一片1,答案就是01的分界线的流量. 本题中的图是平面图,所以求最 ...
- 【BZOJ 2007】 2007: [Noi2010]海拔 (平面图转对偶图+spfa)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2504 Solved: 1195 Description YT市 ...
- 洛谷 P2046 BZOJ 2007 海拔(NOI2010)
题目描述 YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作 一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个 ...
- BZOJ 2007 海拔(平面图最小割-最短路)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2007 题意:给出一个n*n的格子,那么顶点显然有(n+1)*(n+1)个.每两个相邻顶点 ...
- 2007: [Noi2010]海拔 - BZOJ
Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)× ...
- ●BZOJ 2007 NOI 2010 海拔
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2007 题解: 网络流.最小割.对偶图 奇妙的题 ~ 种种原因导致了高度要么为 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的点.一个右下角的连 ...
随机推荐
- Java基础面试操作题: 获取 1-20 之间的随机数,共计 20 个,要求不能重复 获取 1-20 之间的随机数,共计 10 个,要求不能重
package com.swift; import java.util.HashSet; import java.util.Random; import java.util.Set; public c ...
- 洛谷P1164小A点菜
这也是一道01背包的题 用的方法比较的巧妙.这个动态规划相当于反过来做的,自己理解就知道了.代码很短 #include<bits/stdc++.h> using namespace std ...
- 爬虫学习(五)——使用handler管理器对象进行数据爬取的步骤
# 使用管理器对象进行爬取数据的步骤 import urllib.requesturl = "https://www.baidu.com/"# 创建handler的管理器对象han ...
- 1- vue django restful framework 打造生鲜超市
Vue+Django REST framework实战 使用Python3.6与Django2.0.2(Django-rest-framework)以及前端vue开发的前后端分离的商城网站 项目支持支 ...
- k8s的ingress资源简述
ingress controller是独立与controller-manager的Ingress的主要作用是可以利用nginx,haproxy,envoy,traefik等负载均衡器来暴露集群内部服务 ...
- Git 内部原理之 Git 对象哈希
在上一篇文章中,将了数据对象.树对象和提交对象三种Git对象,每种对象会计算出一个hash值.那么,Git是如何计算出Git对象的hash值?本文的内容就是来解答这个问题. Git对象的hash方法 ...
- thinkphp 3.2.3 - Route.class.php 解析(路由匹配)
class Route { public static function check(){ $depr = C('URL_PATHINFO_DEPR'); // '/' $regx = preg_re ...
- Nosql和RDBMS的比较及解释
概述 传统的关系型数据库以及数据仓库在面对大数据的处理时显得越来越力不从心.因为关系数据库管理系统 (RDBMS)的设计从未考虑过能够处理日益增长且格式多变的数据,以及访问数据并进行分析的用户需求呈爆 ...
- Python学习笔记(七)加密加盐
MD5加密和加盐 Python的MD5加密 Python的hashlib模块的MD5加密,是比较简单一种加密,md5函数必须传入编译后的结果,否则会报错: Traceback (most recent ...
- Python 频繁请求问题: [Errno 104] Connection reset by peer
Table of Contents 1. 记遇到的一个问题:[Errno 104] Connection reset by peer 记遇到的一个问题:[Errno 104] Connection r ...