4541: [Hnoi2016]矿区 Time Limit: 30 Sec  Memory Limit: 512 MBSubmit: 433  Solved: 182[Submit][Status][Discuss] Description 平面上的矿区划分成了若干个开发区域.简单地说,你可以将矿区看成一张连通的平面图,平面图划分为了若 干平面块,每个平面块即为一个开发区域,平面块之间的边界必定由若干整点(坐标值为整数的点)和连接这些整点 的线段组成.每个开发区域的矿量与该开发区域的面积有关:具…
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4541 题解: 平面图的对偶图,dfs树 平面图的对偶图的求法: 把所有双向边拆为两条互为反向的单向边, 显然,每条单向边应该唯一属于一个平面. 我们依次枚举还没有被确定属于哪个平面的单向边, 然后从该边出发,包裹出一个最小的平面,那么途中所经过的边都属于这个平面. 包裹的具体做法: 对于当前的边x->y,我们找到其反向边y->x顺时针旋转遇到的第一条边y->z作为包裹该平面的下一条…
首先平面图转对偶图,大概思路是每条边存正反,每个点存出边按极角排序,然后找每条边在它到达点的出边中极角排序的下一个,这样一定是这条边所属最小多边形的临边,然后根据next边找出所有多边形,用三角剖分计算面积 然后就比较妙了,把对偶图随便搞一个生成树出来,然后对于每个询问,如果一条边是树边,那么如果这条边在树上是向上的就加它子树的和,否则就减 #include<iostream> #include<cstdio> #include<algorithm> #include&…
https://www.cnblogs.com/ljh2000-jump/p/6423399.html #include<cmath> #include<vector> #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) typedef long long ll; using namespace std; ; ,nxt[N],tot,r…
学习了一下平面图剖分的姿势,orz cbh 每次只要随便选择一条边,然后不停尽量向左转就行 #include <bits/stdc++.h> #define N 1300000 #define M 5000013 #define LL long long #define pb push_back using namespace std; LL n, m, k; struct point { LL x, y; } S[N]; vector <LL> bi[N]; vector <…
Description 比特哈顿镇有n*n个格点,形成了一个网格图.一开始整张图是完整的.有k次操作,每次会删掉图中的一条边(u,v),你需要回答在删除这条边之后u和v是否仍然连通. Input 第一行包含两个正整数n,k(2<=n<=1500,1<=k<=2n(n-1)),表示网格图的大小以及操作的个数.接下来k行,每行包含两条信息,每条信息包含两个正整数a,b(1<=a,b<=n)以及一个字符c(c=N或者E).如果c=N,表示删除(a,b)到(a,b+1)这条边:…
[HNOI2016]矿区 平面图转对偶图 方法: 1.分成正反两个单向边,每个边属于一个面 2.每个点按照极角序sort出边 3.枚举每一个边,这个边的nxt就是反边的前一个(这样找到的是面的边逆时针的) 4.相当有了置换,把每个nxt环找到,加上统一编号,并计算面积 5.有向面积为负数的是无限域,仅有一个 6.原来的单向边“旋转90度”,连接两个面 然后本题再跑一个以无限域为根的生成树 记录每个原来的边是否是生成树上的边 并记录生成树子树的S和S^2 询问: 如果当前的边是生成树边的话,如果属…
题目链接:矿区 这道题去年暑假就想写了,但是一直拖拉,以至于现在才来写这道题.以前一直在刻意回避几何类的题目,但到了现在这个时候,已经没有什么好害怕的了. 正巧今天神犇\(xzy\)讲了这道题,那我就去写吧.顺便给平面图转对偶图写个学习笔记. 我先讲一下平面图如何转对偶图吧(其实我早就知道了,一直懒得写). 首先,对偶图最基本的需求就是把平面图中的每个块给抠出来.那么,我们该怎么抠呢? 我们显然可以将每一条无向边都变成两条有向边,这样的话围成每个块的边就不会重复且恰好把每条边用一次(最后剩下的边…
题面 传送门 题解 总算会平面图转对偶图了-- 首先我们把无向边拆成两条单向边,这样的话每条边都属于一个面.然后把以每一个点为起点的边按极角排序,那么对于一条边\((u,v)\),我们在所有以\(v\)为起点的边中找到\((v,u)\)的前缀,这条边就是\((u,v)\)的下一条边了.不断重复这个过程直到找到的区域封闭为止 建好对偶图之后,我们对于每一个点,算出这个点所代表的区域的面积.对于无界域(就是外围无限的那个面),它的面积会是一个负数.那么我们找到这个无界域代表的节点之后,以它为根,求出…
2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2504  Solved: 1195 Description YT市是一个规划良好的城市,城市被东西向和南北向的主干道划分为n×n个区域.简单起见,可以将YT市看作一个 正方形,每一个区域也可看作一个正方形.从而,YT城市中包括(n+1)×(n+1)个交叉路口和2n×(n+1)条双向道路 (简称道路),每条双向道路连接主干道上两个相邻的交叉路口.下图为一张YT市的地…