计算几何
make_it_for_good
这个作者很懒,什么都没留下…
展开
-
bzoj 1020 计算几何
题意:一堆多边形,一个折线。求折线上的点离多边形最远距离。听说莫涛的论文写了这道题?先把折线中所有的线段用多边形截,把不在多边形内的线段塞到一个队列里。 遍历队列,对于一个线段求出左端点到多边形的最近点p1,右端点到多边形的最近点p2。分别用左右端点到p1,p2的距离更新答案。在线段上二分一个点p使dis(p,p1)=dis(p,p2)。 如果dis(p,p1)>ans那么把当前线段从p分成两段原创 2016-08-17 18:35:15 · 400 阅读 · 0 评论 -
bzoj 1027 [JSOI2007]合金 计算几何+floyd
由于前两维确定第三维也确定,所以只需要考虑前两维。将一个合金看成平面上的点,那么一些合金能表示出另一个合金当且仅当另一个合金的点在这些合金形成的凸包内部。枚举两个给出的合金i,ji,j。如果所有的需要的合金都在射线i−>ji->j 的左边那么从 ii 到 jj 连一条边。floyd求一下最小环就是答案。注意一些细节问题。#include <bits/stdc++.h> using namespace原创 2016-08-31 17:15:52 · 298 阅读 · 0 评论 -
bzoj 1573 [Usaco2009 Open]牛绣花cowemb 计算几何 树状数组
先计算几何求每条线在圆上的交点。 然后将两个交点按极角序对应到[l,r]一段区间。那么答案就是求有多少相交区间。按左端点排序离线树状数组扫一遍就行了。#include <bits/stdc++.h> using namespace std; #define N 51000 double d; int n,top,ans,cnt; int tr[N<<1]; double st[N<<1]; str原创 2016-11-11 14:56:15 · 513 阅读 · 0 评论 -
bzoj1039 [ZJOI2008]无序运动Movement AC自动机 计算几何
对于平移,旋转,放缩,由于任意相邻两线段呈夹角不变,长度比例不变。因此只需要判断相邻两线段长度比例和夹角不变。 夹角可以用叉积和点积的比值以及符号确定。 注意必须保留两个符号。 然后可以用AC自动机计算,每个点的答案是这个点fail树子树中的点被长串经过的次数和。对于翻转操作只需把长的串翻转再做一遍。 注意判断翻转不变的串和长度小于3的串。#include <bits/stdc++.h> u原创 2016-11-23 14:49:03 · 989 阅读 · 0 评论 -
bzoj 3630 [JLOI2014]镜面通道 计算几何 网络流
只要上下边界不连通就可以。 然后两个图形相交就连边,拆点跑网络流就行了。 判相交比较麻烦(抑或是我写得麻烦)#include <bits/stdc++.h> using namespace std; #define N 310 #define inf 1e9 #define eps 1e-8 #define M 1100000 int n,X,Y,c1,c2,cnt,S,T,tot,ans; i原创 2017-01-24 11:37:34 · 591 阅读 · 0 评论