ACM-计算几何
文章平均质量分 76
czhou0
这个作者很懒,什么都没留下…
展开
-
POJ 2318 TOYS (计算几何,向量积,二分查找)
题目意思很简单,一个盒子,被几条直线分成几个部分,然后有一些随机分布的点,问各部分中点的个数分别为多少。 基本思路是判断点在直线的左边还是右边,这里要用到向量积,在不同边向量积是正负性是不同的。只要找到一个区间,左边的直线和右边的直线同这个点,得到的向量积正负性不同,即可。查找的方法是二分查找,至于查找的方向,也是由向量积决定 的。 #include using namespace std原创 2012-07-08 23:22:38 · 326 阅读 · 0 评论 -
POJ 3787 Convex Hull of Lattice Points(凸包)
还是凸包,只不过常规的求法第一步是找最左下的点,而这题是找最左上的点。实质没有不同。 #include #include #include #define PI 3.141592653 using namespace std; typedef struct{ int x, y; } POINT; POINT ch[100]; double dist(POINT a, POINT b)原创 2012-07-08 00:16:32 · 479 阅读 · 0 评论 -
POJ 1931 Biometrics (计算几何、标量积、向量积)
题目看起来比较有趣,模拟人脸识别,指纹识别。具体是这样的:用两组点分别表示两个几何图形,判断这两个几何图形是否相似。“相似“的标准是:通过旋转和放大缩小操作能过使两个图形相等。 判断旋转要用到向量积和标量积,光用一个是不够的,因为 sin 和 cos 函数在 0 到 360 度定义域内的值不是唯一的。 判断放大缩小,只要算向量的模就可以。 #include #include #defin原创 2012-07-08 23:46:21 · 467 阅读 · 0 评论 -
POJ 1113 Wall (凸包)
给一个多边形(可能是凹的),然后给出一个最小周长围住这个多边形,围的墙至少要离这个多边形一定距离。 凸包,最后加上求周长即可。 #include #include #include #define PI 3.141592653 using namespace std; typedef struct{ int x, y; } POINT; POINT ch[1000]; doub原创 2012-07-08 00:12:37 · 172 阅读 · 0 评论 -
UVa 681 Convex Hull Finding (凸包,Graham‘s Scan)
这道题目没有直接给出一些点,而是给出了一个凹多边形,让求凸包。这让我误以为不用先根据极点排序了,可以直接scan...后来发现好多反例,还是老老实实来。 Graham‘s Scan 其实步骤不复杂:(1)选出最左下的点;(2)对剩下的点按极角排序;(3)按序进栈出栈。 第(3)步,判断进栈出栈的标准,其实就是判断线段的走向。其中第(2)和(3)步都要用到矢量积,也就是外积。 #inc原创 2012-07-07 23:54:42 · 644 阅读 · 0 评论