题目大意:给出四个点确定两条直线。如果是一条线输出“LINE”,如果平行输出“NONE”, 如果有交点输出交点坐标。思路:注意是直线,不是线段啊。用两点式推出两条直线方程 :(y1 - y2)x + (x2 - x1)y = x2y1 - x1y2;(y3 - y4)x + (x4 - x3)y = x4y3 - x3y4;a1x + b1y + c1 = 0;a2x + b2y + c2 = 0;D = a1b2 - a2b1; D1 = b1c2 - b2c1; D2 = c1a2 - c2a1;D != 0时, x = D1 / D, y = D2 / D; 得到交点坐标。D = 0时; Read More
posted @ 2012-08-15 23:46 To be an ACMan Views(301) Comments(2) Diggs(0)
若存在这样一条直线,过投影相交区域作直线的垂线,该垂线必定与每条线段相交,问题转化为问是否存在一条线和所有线段相交;若存在一条直线与所有线段相机相交,将该线旋转,平移,直到不能再动为止,此时该直线必定经过这些线段的某两个端点;所以枚举任意两个端点即可。需要注意的是,当枚举的两个端点很近的时候,即sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))<eps时,那么这两个点是可以认为重合的,由于如果把这两点的连线作为向量,向量的模会很小,就可能导致无论怎么做叉积结果都为0从而认为各个点都是和这两个点共线的。因此,在枚举两个端点的时候要避免这种情况,同时,避免枚举这种情况 Read More
posted @ 2012-08-15 19:47 To be an ACMan Views(216) Comments(0) Diggs(0)
在poj 2318的基础上 加上一个排序(因为板的坐标不是有序的),再加多一个统计就好了。View Code #include<stdio.h>#include<string.h>#include<math.h>#include<algorithm>using namespace std;struct point{ int x, y;};struct node{ int up, down;}date[1007];int n, m;point toy[1007];point a, b;int ans[1007], cnt[1007];int cro Read More
posted @ 2012-08-15 14:33 To be an ACMan Views(193) Comments(0) Diggs(0)
第一题计算几何,1A,好开心哦。View Code #include<stdio.h>#include<string.h>#include<math.h>struct point{ int x, y;};int up[5007],down[5007];;int n, m;point toy[5007];point a, b;int ans[5007];int cross(point o, point a, point b){ return ((a.x-o.x)*(b.y-o.y)-(a.y-o.y)*(b.x-o.x));}int find(point ke Read More
posted @ 2012-08-15 14:15 To be an ACMan Views(190) Comments(0) Diggs(0)
计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点快。一。点,线,面,形基本关系,点积叉积的理解POJ 2318 TOYS(推荐)http://acm.pku.edu.cn/JudgeOnline/problem?id=2318POJ 2398 Toy Storage( Read More
posted @ 2012-08-15 12:03 To be an ACMan Views(251) Comments(0) Diggs(0)
给n个物品,容量为m的包,要求这样的方案数:选中n个物品放入背包后,剩下的物品中,任意一个都放不进去。我们先将物品按容量从大到小排序。考虑以下2种情况:1. 考虑一种特殊情况,一个都放不进去,就是剩下物品中体积最小的那个(体积为w[1])都放不进去,这个情况就会无解,答案为0;2. 一般情况:从小到大枚举不放入背包的体积最小的,那么此时比它小的物品都应该放入背包中,此时背包装载容量应为[m-w[u]+1,m] (1<=u<=n)我们可以对剩下的u+1到n的物品做01背包,然后将可行的方案统计出来,这样,第u件物品考虑了u-1次,总复杂度为O(n^2*m);优化:n较大的话会超时,我 Read More
posted @ 2012-08-15 10:23 To be an ACMan Views(350) Comments(0) Diggs(0)