平面图与对偶图

  平面图就是能在平面上画出来, 且所有边仅在顶点处相交的图.

  对于一个平面图, 我们按照下面方式定义它的对偶图:

    将每个平面区域建立一个节点.

    对于原图中的每条边, 将与它相邻的两个平面区域对应的节点连边.

  点定位: 确定平面中的某个点在哪个区域.

  举个例子来说:

    

  

  对于平面图转化为对偶图, 很多时候图都是方方正正的网格图, 可以方便地进行标号.

  但是至于平面图与对偶图的一般转化, 我还不大会, 可以看一下 miskcoo 的博客 .

  orz GEOTCBRL,  WC 2013 平面图 1A .

  平面图与它的对偶图有这样一个有用的性质.

  将平面图框在一个正交的矩形内部, 定义它的左上角, 右下角不存在.

  设它左下方无限大的平面区域为 S , 右上方无限大的平面区域为 T .

  那么平面图的割, 与对偶图中从 S 到 T 的路径一一对应.

  这条性质是很有用的, 它提供了转化的契机.

  平面图网络流: 最大流变成了最小割, 在对偶图中变成了最短路.

  还可以进行 DP 之类的.

时间: 2024-07-30 01:14:00

平面图与对偶图的相关文章

BZOJ 4541: [Hnoi2016]矿区 平面图转对偶图+DFS树

4541: [Hnoi2016]矿区 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 433  Solved: 182[Submit][Status][Discuss] Description 平面上的矿区划分成了若干个开发区域.简单地说,你可以将矿区看成一张连通的平面图,平面图划分为了若 干平面块,每个平面块即为一个开发区域,平面块之间的边界必定由若干整点(坐标值为整数的点)和连接这些整点 的线段组成.每个开发区域的矿量与该开发区域的面积有关:具

【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)

2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2095  Solved: 1002[Submit][Status][Discuss] Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路(简称道路),每条双向道路连接主

BZOJ 2965 保护古迹 平面图转对偶图+最小割

题目大意:给出一个平面图,这个平面图中分布着一些点,可以用平面图中的边将一些点围住,问围住k个点的最小花费是多少. 思路:这题重点是平面图转对偶图.做法不难理解.先将所有的边拆成两条,枚举所有的边,若这个边没有被标记过,那么就对这条边进行搜索,弄出来以这个边为一边的平面区域,可以顺时针或者逆时针.将所有边挂在这条边的起点上,在所有点上按照每条边的极角排序,每次找的时候找大于(或小于)当前边的反向边的第一条边作为搜索的下一条边.直到回到最开始的点.找边的过程中记录面积,判断面积的正负来判断这个平面

【BZOJ2965】保护古迹 平面图转对偶图,暴力,网络流

#include <stdio.h> int main() { puts("转载请注明出处谢谢"); puts("http://blog.csdn.net/vmurder/article/details/43199045"); } 题意:自己看去吧. 题解:如果不考虑这道题的某些小数据范围, 那么正解应该是: 首先平面图转对偶图, 然后扫描线处理名胜古迹 过程中运用到邪恶的平衡树(就算是set也依然恶心) 或者用神奇方法Ⅰ判断(cheat)一个名胜古迹在

[BZOJ 4423] Bytehattan 平面图与对偶图

题意 给定一个 $n \times n$ 的点阵, 形成一个网格图. 最初的时候四连通. $m$ 次操作, 每次删去一条边 $(u, v)$ , 问 $u$ 和 $v$ 是否仍然连通. $2 \le n \le 1500, 1 \le m \le 2n(n - 1)$ . 分析 将平面图转化为它的对偶图. 每次相当于将两个平面区域合并. 对于删去一条边, 若与它相邻的两个区域连通, 那么操作后两个点中有一个点被区域包围, 一个点被隔在了外面, 所以不连通, 反之仍然连通. 实现 1 #inclu

NOI 2010 海拔 ——平面图转对偶图

[题目分析] 可以知道,所有的海拔是0或1 最小割转最短路,就可以啦 SPFA被卡,只能换DIJ [代码] #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <queue> using namespace std; #define maxn 2000005 int h[maxn],to[maxn],ne[maxn],w[ma

bzoj3051: [wc2013]平面图

Description Input Output 扫描线求出平面图的对偶图然后求最小生成树,用并查集按秩合并,以便查询两点间路径最大权 #include<stdio.h> #include<algorithm> #include<vector> #include<set> #include<cmath> int f[200007],f2[200007],h2[200007]; int get(int*f,int x){ int a=x,c; wh

Vijos1734 NOI2010 海拔 平面图最小割

建立平面图的对偶图,把最小割转化成最短路问题 Dijkstra算法堆优化 (被输入顺序搞WA了好几次T_T) 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <queue> 5 6 const int maxN=502; 7 const int maxV=maxN*maxN; 8 const int inf=0x3f3f3f3f; 9 10 struct E

【BZOJ2007】【Noi2010】海拔 平面图最小割转最短路

#include <stdio.h> int main() { puts("转载请注明出处谢谢"); puts("http://blog.csdn.net/vmurder/article/details/43280891"); } 题解:这个模型很水,不需要极角序神马转对偶图,直接乱搞就行. 然后目的是把图割开,那么只需要跑S->T最短路就行. 要做平面图转对偶图不妨去这篇. [BZOJ2965]保护古迹 平面图转对偶图,暴力,网络流 还有就是某人