传送门 如果我们对于每一个点能找到与其相邻的点(即不经过其他点监视范围能够直接到达其监视范围的点)和是否直接到达边界,就可以直接BFS求最短路求出答案. 所以当前最重要的问题是如何找到对于每一个点相邻的点. 如果你知道泰森多边形,你就可以发现所有点的监视范围刚好对应这些点在这个矩形里的泰森多边形. 因为两个点监视范围的分界线一定在这两个点对应线段的中垂线上,所以将当前点到所有点的中垂线拿出来跑一遍半平面交,如果某个点与当前点的中垂线在半平面交中,那么这两个点就相邻. 还需要知道对于某个点能否不经…
把每个人的监视范围看成点,相邻的两个监视范围连边,那么跑一遍最短路就可以了(事实上边权都为1可以直接bfs).显然存在最优路线没有某个时刻同时被多于两人监视,要到达另一个区域的话完全可以经过分界线而不是和其他区域的交点(若两个区域只有一个交点的话是不能直接到达的),总之就是说不用特判同时被多人监视的情况. 现在问题是怎么求出哪些监视范围相邻.考虑对于某个人的监视范围求出所有与它相邻的.两个监视范围的公共边是这两个人连线的中垂线,把这些线画出来可以发现求个半平面交就好了.注意线要求在矩形范围内.…
P3297 [SDOI2013]逃考 题意 给一个平面矩形,里面有一些有标号点,有一个是人物点,人物点会被最近的其他点控制,人物点要走出矩形,求人物点最少被几个点控制过. 保证一开始只被一个点控制,没有点在矩阵边界上 多组数据\(t\le 3\),点数\(\le600\). 画一画图可以发现 对每个点,这个点和另一个点的垂直平分线可以划分这两个点的控制区域,每个点搞出\(n-1\)个垂直平分线,然后加上边界的四条,做半平面交,然后对每个点向最后半平面交留下的线所代表的点连边,跑最短路就可以了,复…
传送门 gugugu 首先每个人管理的区域是一个多边形,并且整个矩形是被这样的多边形填满的.现在的问题是求一条经过多边形最少的路径到达边界,这个可以最短路. 现在的问题是建图,显然我们应该给相邻的多边形连边,考虑一个人和另一个人的多边形交界线,这个线就是两点线段的中垂线,于是我们可以每次把一个人所有的分界线和矩形边界拿出来求一个半平面交,如果某条边在半平面交上就和对应点连边就好了,矩形边界在半平面交上就和外面连边.最后求起点所在多边形到外面的最短路 然后我半平面交写错,就写了半天qwq #inc…
传送门 完全看不出这思路是怎么来的-- 首先对于两个亲戚,他们监视范围的边界是他们连线的中垂线.那么对于一个亲戚来说它能监视的范围就是所有的中垂线形成的半平面交 然后如果某两个亲戚的监视范围有公共边,那么就在这两个亲戚之间连一条边,如果某个亲戚的监视范围和矩阵边界有公共边,那么就把这个亲戚和终点连边.然后以一开始监视的亲戚为起点,跑一遍最短路即可 //minamoto #include<bits/stdc++.h> #define inf 0x3f3f3f3f #define fp(i,a,b…
题目 我发现我现在连题面都懒得复制粘贴了-- 题目大意 在一个矩形中有一堆点,这堆点按照以下规则将矩形瓜分成一堆块: 对于每个坐标,它属于离它最近的点的块. 一个人从某个坐标出发到矩形外面,求经过的最少的区域个数. 思考历程 显然,如果将每个点管辖的区域处理出来,和周围接壤的区域连一条边,答案就是一个最短路的事情. 可问题是,怎么求啊?! 作为计算几何白痴,我不得不弃疗-- 正解 正解是求半平面交-- 显然,对于每个点,枚举其它点,作两点连线的垂直平分线,围成的区域就是它管辖的范围. 所以这就是…
Mission 高考又来了,对于不认真读书的来讲真不是个好消息.为了小杨能在家里认真读书,他的亲戚决定驻扎在他的家里监督他学习,有爷爷奶奶.外公外婆.大舅.大嫂.阿姨-- 小杨实在是忍无可忍了,这种生活跟监狱有什么区别!为了他亲爱的小红,为了他的dota,他决定越狱! 假设小杨的家是个n*m 的矩阵,左下角坐标为(0,0),右上角坐标为(x1,y1).小杨有n 个亲戚,驻扎在矩阵里(位置不同,且不在矩阵的边上).小杨家里的每个地方都被亲戚监控着,而且只被距离最近的亲戚监控: 也就是说假设小杨所在…
传送门 话说去年的省选计算几何难度跟前几年比起来根本不能做啊(虽然去年考的时候并没有学过计算几何) 这题就是推个式子然后上半平面交就做完了. 什么? 怎么推式子? 先把题目的概率转换成求出可行区域. 然后用可行区域的面积比上总面积就是答案了. 我们设0号点(x1,y1)(x1,y1)(x1,y1),1号点(x2,y2)(x2,y2)(x2,y2),i号点(x3,y3)(x3,y3)(x3,y3),i+1号点(x4,y4)(x4,y4)(x4,y4) 然后由题可知cross(p0,p1)<cros…
按逆时针顺序给出n个点,求它们组成的多边形的最大内切圆半径. 二分这个半径,将所有直线向多边形中心平移r距离,如果半平面交不存在那么r大了,否则r小了. 平移直线就是对于向量ab,因为是逆时针的,向中心平移就是向向量左手边平移,求出长度为r方向指向向量左手边的向量p,a+p指向b+p就是平移后的向量. 半平面交就是对于每个半平面ax+by+c>0,将当前数组里的点(一开始是所有点)带入,如果满足条件,那么保留该点,否则,先看i-1号点是否满足条件,如果满足,那么将i-1和i点所在直线和直线ax+…
2618: [Cqoi2006]凸多边形 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 959  Solved: 489[Submit][Status][Discuss] Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图:   则相交部分的面积为5.233. Input 第一行有一个整数n,表示凸多边形的个数,以下依次描述各个多边形.第i个多边形的第一行包含一个整数mi,表示多边形的边数,以…