ACM模板
RJxiaowu
这个作者很懒,什么都没留下…
展开
-
计算几何_三维凸包(3d convex hull)
const double eps = 1e-8;typedef list<int>::iterator liit;inline int sign(double d){ if(d < -eps) return -1; return (d > eps) ? 1 : 0;}struct point{ double x, y, z; point...2011-10-10 22:34:43 · 1964 阅读 · 0 评论 -
多边形可以容纳的半径最大的圆
/*http://acm.hdu.edu.cn/showproblem.php?pid=3644枚举,如果一个圆能放在多边形里面,你将这个圆移动,直到跟多边形“相切",这个相切也不能算是标准的相切定义,反正有三种情况:一、圆碰到了多边形的两个点;二、圆碰到了多边形的一边一点;三、圆碰到了多边形的两边。以至于圆不能在移动了,如此,你可以枚举这些情况,再判断圆是否放得...2011-10-15 20:57:16 · 454 阅读 · 0 评论 -
矩形的面积并
const int N = 100; //矩形的最大个数typedef double typev;struct seg{ int l, r; int c; //覆盖数 typev m; //覆盖长度}segs[N<<3];struct li{ typev x, ly, hy; //ly为小的,hy为大的 void set(typev x,...2011-10-15 20:45:17 · 177 阅读 · 0 评论 -
计算几何_几何知识1
1、三维向量叉乘三维向量叉乘得到一个新的向量:(a1,a2,a3) X (b1,b2,b3) = (a2 * b3 – a3 * b2, -(a1 * b3 – a3 * b1), a1 * b2 – a2 * b1)。 2、 四点共线四点共线的判断。设A,B,C,D的坐标分别是(xi,yi,zi),(i = 1, 2, 3, 4)。则由四个向量(xi,yi,zi, ...2011-10-15 20:04:49 · 290 阅读 · 0 评论 -
点集的最小面积包围矩形
typedef double typev;const double eps = 1e-8;const int N = 50005;int sign(double d){ return d < -eps ? -1 : (d > eps);}struct point{ typev x, y; point operator-(point...2011-10-13 21:10:10 · 1558 阅读 · 0 评论 -
点对多边形的夹角
struct point{ double x, y;};double get_angle(point p, point ps[], int n){ int i; //过p做一条水平直线,求所有点对这条水平直线的夹角,最大的角减去最小的角即可 double Max, Min, ang1, ang2, dang, sum; Max = Min = sum = 0; ps...2011-10-13 20:10:01 · 219 阅读 · 0 评论 -
计算几何_凸包
struct point{ double x, y;};//多边形类struct poly{ static const int N = 105; //点数的最大值 point ps[N+5]; //逆时针存储多边形的点,[0,pn-1]存储点 int pn; //点数 poly() { pn = 0; } //加进一个点 void push(poin...2011-10-13 20:08:56 · 95 阅读 · 0 评论 -
计算几何_点到直线的垂足
struct point{ double x, y;};//求点p到st->ed的垂足,列参数方程point getRoot(point p, point st, point ed){ point ans; double u=((ed.x-st.x)*(ed.x-st.x)+(ed.y-st.y)*(ed.y-st.y)); u = ((ed.x...2011-10-12 21:42:16 · 743 阅读 · 0 评论 -
计算几何_点p到平面的距离
struct point3d{ double x, y, z;};//点p到平面ax+by+cz+d=0的距离inline double distPtoPlane(point3d p, double a, double b, double c, double d){ double db = fabs(p.x*a+p.y*b+p.z*c+d); db /= sqrt(a...2011-10-12 21:40:10 · 462 阅读 · 0 评论 -
计算几何_半平面求交
const double eps = 1e-8;const double inf = 1e30;int sign(double d){ return d < -eps ? -1 : (d > eps);}struct point{ double x, y; point(double _x=0, double _y=0) : x(_x), y(_y) {...2011-10-12 21:22:41 · 114 阅读 · 0 评论 -
计算几何_多边形的有向面积和确保多边形的点是逆时针排列
const double eps = 1e-8;int sign(double d){ return d < -eps ? -1 : (d > eps);}//多边形类struct poly{ static const int N = 1005; //点数的最大值 point ps[N+5]; //逆时针存储多边形的点,[0,pn-1]存储...原创 2011-10-12 21:20:57 · 187 阅读 · 0 评论 -
求两个字符串的最长公共连续子序列(SAM实现)
//时间复杂度O(N)#include <stdio.h>#include <cstring>const int R = 26;const int N = 250005; //字符串的长度struct node{ node *next[R], *par; int v; //该节点表示的子串的最大长度,最小长度即为par的最大长度+1,因此...2012-05-11 22:19:16 · 254 阅读 · 0 评论