luogu P3297 [SDOI2013]逃考】的更多相关文章

传送门 gugugu 首先每个人管理的区域是一个多边形,并且整个矩形是被这样的多边形填满的.现在的问题是求一条经过多边形最少的路径到达边界,这个可以最短路. 现在的问题是建图,显然我们应该给相邻的多边形连边,考虑一个人和另一个人的多边形交界线,这个线就是两点线段的中垂线,于是我们可以每次把一个人所有的分界线和矩形边界拿出来求一个半平面交,如果某条边在半平面交上就和对应点连边就好了,矩形边界在半平面交上就和外面连边.最后求起点所在多边形到外面的最短路 然后我半平面交写错,就写了半天qwq #inc…
P3297 [SDOI2013]逃考 题意 给一个平面矩形,里面有一些有标号点,有一个是人物点,人物点会被最近的其他点控制,人物点要走出矩形,求人物点最少被几个点控制过. 保证一开始只被一个点控制,没有点在矩阵边界上 多组数据\(t\le 3\),点数\(\le600\). 画一画图可以发现 对每个点,这个点和另一个点的垂直平分线可以划分这两个点的控制区域,每个点搞出\(n-1\)个垂直平分线,然后加上边界的四条,做半平面交,然后对每个点向最后半平面交留下的线所代表的点连边,跑最短路就可以了,复…
传送门 完全看不出这思路是怎么来的-- 首先对于两个亲戚,他们监视范围的边界是他们连线的中垂线.那么对于一个亲戚来说它能监视的范围就是所有的中垂线形成的半平面交 然后如果某两个亲戚的监视范围有公共边,那么就在这两个亲戚之间连一条边,如果某个亲戚的监视范围和矩阵边界有公共边,那么就把这个亲戚和终点连边.然后以一开始监视的亲戚为起点,跑一遍最短路即可 //minamoto #include<bits/stdc++.h> #define inf 0x3f3f3f3f #define fp(i,a,b…
传送门 如果我们对于每一个点能找到与其相邻的点(即不经过其他点监视范围能够直接到达其监视范围的点)和是否直接到达边界,就可以直接BFS求最短路求出答案. 所以当前最重要的问题是如何找到对于每一个点相邻的点. 如果你知道泰森多边形,你就可以发现所有点的监视范围刚好对应这些点在这个矩形里的泰森多边形. 因为两个点监视范围的分界线一定在这两个点对应线段的中垂线上,所以将当前点到所有点的中垂线拿出来跑一遍半平面交,如果某个点与当前点的中垂线在半平面交中,那么这两个点就相邻. 还需要知道对于某个点能否不经…
把每个人的监视范围看成点,相邻的两个监视范围连边,那么跑一遍最短路就可以了(事实上边权都为1可以直接bfs).显然存在最优路线没有某个时刻同时被多于两人监视,要到达另一个区域的话完全可以经过分界线而不是和其他区域的交点(若两个区域只有一个交点的话是不能直接到达的),总之就是说不用特判同时被多人监视的情况. 现在问题是怎么求出哪些监视范围相邻.考虑对于某个人的监视范围求出所有与它相邻的.两个监视范围的公共边是这两个人连线的中垂线,把这些线画出来可以发现求个半平面交就好了.注意线要求在矩形范围内.…
题目链接 bz似乎挂了... luogu P3305 [SDOI2013]费用流 题解 dalao告诉我,这题 似乎很水.... 懂了题目大意就可以随便切了 问1,最大流 问2,二分最大边权求,check是否为最大流 PS:今天代码很多bug....惨orz 代码 #include<queue> #include<cstdio> #include<cstring> #include<algorithm> #define INF 0x7fffffff #def…
题目 我发现我现在连题面都懒得复制粘贴了-- 题目大意 在一个矩形中有一堆点,这堆点按照以下规则将矩形瓜分成一堆块: 对于每个坐标,它属于离它最近的点的块. 一个人从某个坐标出发到矩形外面,求经过的最少的区域个数. 思考历程 显然,如果将每个点管辖的区域处理出来,和周围接壤的区域连一条边,答案就是一个最短路的事情. 可问题是,怎么求啊?! 作为计算几何白痴,我不得不弃疗-- 正解 正解是求半平面交-- 显然,对于每个点,枚举其它点,作两点连线的垂直平分线,围成的区域就是它管辖的范围. 所以这就是…
Mission 高考又来了,对于不认真读书的来讲真不是个好消息.为了小杨能在家里认真读书,他的亲戚决定驻扎在他的家里监督他学习,有爷爷奶奶.外公外婆.大舅.大嫂.阿姨-- 小杨实在是忍无可忍了,这种生活跟监狱有什么区别!为了他亲爱的小红,为了他的dota,他决定越狱! 假设小杨的家是个n*m 的矩阵,左下角坐标为(0,0),右上角坐标为(x1,y1).小杨有n 个亲戚,驻扎在矩阵里(位置不同,且不在矩阵的边上).小杨家里的每个地方都被亲戚监控着,而且只被距离最近的亲戚监控: 也就是说假设小杨所在…
惊了,我怎么这么菜啊.. 题目链接: (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=3203 (luogu)https://www.luogu.org/problemnew/show/P3299 题解: 先讲正常做法. 设\(S_i\)为\(i\)的前缀和,则显然第\(i\)次答案为\(\max^i_{j=1} \frac{S_i-S_{j-1}}{x_i+id-jd}\) 那么很显然就是要求从一个点\((x_i+id,S_i)\)…
题目链接 \(Click\) \(Here\) 非常有趣的一个题目. 关键结论:所有的单位费用应该被分配在流量最大的边上. 即:在保证最大流的前提下,使最大流量最小.这里我们采用二分的方法,每次判断让所有边的流量\(<=mid\)时是否依然有最大流,求得最小的最大流量\(*p\)即可. 为什么会有实数流量呢?其实我也不懂,不过这也造成这个题目需要把流量改成\(double\),有很多细节需要小心谨慎... #include <bits/stdc++.h> using namespace…