海拔(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的点.一个右下角的连 ...
随机推荐
- UOJ#386. 【UNR #3】鸽子固定器(链表)
题意 题目链接 为了固定S**p*鸽鸽,whx和zzt来到鸽具商店选购鸽子固定器. 鸽具商店有 nn 个不同大小的固定器,现在可以选择至多 mm 个来固定S**p*鸽鸽.每个固定器有大小 sisi 和 ...
- Pots POJ - 3414 (搜索+记录路径)
Pots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 22688 Accepted: 9626 Special J ...
- Session 会话保持
本文将详细讨论session的工作机制并且对在Java web application中应用session机制时常见的问题作出解答 一.术语session session,中文经常翻译为会话,其本来的 ...
- java util - Hex转换工具
测试代码 package cn.java.codec.hex; public class Test { public static void main(String[] args) { String ...
- MYSQL 自定义排序
在mysql order by排序中,大多数情况下仅使用默认排序规则就够了:字符串按字典顺序,数字按大小等等.可有时候,某个字段是有自身业务含义的,比如 type(1,2,3)可能表示早/中/晚,如果 ...
- JZOJ 3509. 【NOIP2013模拟11.5B组】倒霉的小C
3509. [NOIP2013模拟11.5B组]倒霉的小C(beats) (File IO): input:beats.in output:beats.out Time Limits: 1000 ms ...
- Linux多线程总结
一.Linux线程 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程”本质 ...
- WTForm
Flask-WTForm: from flask import Flask,render_template,request,redirect from wtforms.fields import co ...
- 【Pow(x,n)】
题目: Implement pow(x, n). 代码: class Solution { public: double myPow(double x, int n) { double ret = S ...
- PAT乙级 1001(C)+1054(Java)
准备一天两道题,就这样吧,先从水题开始. 1001.点击查看 分析:看懂题就应该写出来了,注意边界与0情况的处理. #include<stdio.h> #include<math.h ...