随笔分类 - 计算几何—计算几何
摘要:妙啊,是一个逼近(?)的做法 把两个值最为平面上的点坐标,然后答案也是一个点。 首先求出可能是答案的点xy分别是按照c和t排序做最小生成树的答案,然后考虑比这两个点的答案小的答案,一定在xy连线靠近原电一侧(不过这部分并不全都能更新答案),然后最小的一定是距离xy连线最远的,设为点z,也就是三角形x
阅读全文
摘要:枚举起点,然后设f[i][j]为上凸壳上一个点是i当前点是j的最大面积,g是下凸壳,然后合并的时候枚举结束点t合并上下凸壳即可 这样的好处是每次转移都是往凸多边形里加一个三角形(s,i,j),所以判断转移合法只要预处理出所有三角形是否合法即可,同时预处理出三角形面积,转移就是f[j][k]=max(
阅读全文
摘要:参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1 a b得出,所以删掉c,把a,b抽象成二维平面上的点。首先考虑一个客户需求能被哪些原料配出来:两个原料点连线上的点都可以,要是多个原料点,那么这些线的向量构成的凸包中的点都可以
阅读全文
摘要:半平面交求多边形的核,注意边是顺时针给出的
阅读全文
摘要:求多边形的核,直接把所有边求半平面交判断有无即可
阅读全文
摘要:相当于多边形内最大圆,二分半径r,然后把每条边内收r,求是否有半平面交(即是否合法)
阅读全文
摘要:```cpp //先打个50暴力,10min50分简直美滋滋~ include include include using namespace std; const int N=5005; const double eps=1e 8; int n,t,m,ans; struct dian { dou
阅读全文
摘要:其实并不算标准半平面交?但是思路差不多 先按照斜率排序,然后用栈维护凸壳,每遇到重斜率或a[i],s[top 1]交点的x轴在s[top],s[top 1]交点左侧,则说明s[top]被a[i],s[top 1]覆盖,弹栈即可; cpp include include include using n
阅读全文
摘要:```cpp include include include include using namespace std; const int N=1005; const double eps=1e 8; int T,n,r,w,top; struct dian { double x,y; dian(d
阅读全文
摘要:```cpp #include #include #include #include using namespace std; const int N=505; int n; double r; struct dian { double x,y; dian(double X=0,double Y=0) { x=X,y=Y; } dian operator + (const dian ...
阅读全文
摘要:```cpp include include include include using namespace std; const int N=505; int d,b,n,m; struct dian { double x,y; dian(double X=0,double Y=0) { x=X,
阅读全文
摘要:1.质量集中在顶点上。n个顶点坐标为(xi,yi),质量为mi,则重心(∑( xi×mi ) / ∑mi, ∑( yi×mi ) / ∑mi) 2.质量分布均匀。这个题就是这一类型,算法和上面的不同。 特殊地,质量均匀的三角形重心:(( x0 + x1 + x2 ) / 3,Y = ( y0 + y
阅读全文