![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
凸包
LauZiyang
exploring
展开
-
省选专练USACO TRAIN5.1 圈奶牛
凸包入门题。介绍一下我的算法:Graham扫描法利用栈的思想。与Jarris步进法不同的是,这个算法不适用角度。他利用了向量的叉乘。根据有向的平行四边形来判断当前点是否更优。OK看代码吧。(*^▽^*)。#include<iostream> #include<cstring> #include<algorithm> #include<cmath> #...原创 2018-03-19 22:54:54 · 215 阅读 · 0 评论 -
模板 向量
const double INF=1e16; const double eps=1e-8; const int N=60000; struct Point{ double x,y; Point(double _x=0,double _y=0):x(_x),y(_y){} friend Point operator +(Point A,Point B){return Point(A.x+B.x...原创 2018-03-21 20:09:24 · 147 阅读 · 0 评论 -
省选专练JSOI2007合金
这个是真的想不到啊第一你搞三维的没意义于是乎,把c看做1-a-b那么c就没有了意义,因为确定了a,b辣么c自然确定下来其次对于这个东西有着重要的引理:对于二元笛卡尔基上的点(Ax,Ay)(Bx,By)他们的连线就是可以配凑的情况辣么扩展到多个点进行配凑:由于可把这个线段上的每一个点都看做一种新点,于是这些点的连线可以扩展呜呼,线的无限重叠就是面了啊!!!顾:这实际是求多少个点构成的凸包可以包含一个...原创 2018-05-26 21:21:40 · 115 阅读 · 0 评论 -
省选专练[HNOI2008]水平可见直线
就是一个单纯的上凸壳扫描法水过#include<bits/stdc++.h> using namespace std; const int N=600000; const double eps=1e-16; struct Point{ double x,y; int id; Point(double _x=0.0,double _y=0.0):x(_x),y(_y){} fri...原创 2018-05-26 21:41:50 · 115 阅读 · 0 评论 -
省选专练之HNOI2007最小矩形覆盖&模板:旋转卡壳
1:先求出凸包 2:由于矩形的一条边必然在凸包上枚举这条边 3:左右(l,r)利用点乘算出(因为存在cos) 4:上下(p)利用叉乘算出(因为存在sin) #include<bits/stdc++.h> using namespace std; const double eps=1e-12; const int N=2e6+100; int cmp(double A){ ...原创 2018-07-16 21:45:55 · 128 阅读 · 0 评论