求凸包—— graham_scan算法先按Y-X排序,在按对p0的极角排序,然后进行扫描Point stk[maxn];int top;bool cmpYX(const Point A,const Point B)//按Y-X排序{ if(A.yEPS;}void graham_scan(){...
分类:
编程语言 时间:
2015-04-07 00:35:56
阅读次数:
204
这个题和UVa11529很相似。枚举一个中心点,然后按极角排序,统计以这个点为钝角的三角形的个数,然后用C(n, 3)减去就是答案。另外遇到直角三角形的情况很是蛋疼,可以用一个eps,不嫌麻烦的话就用整数的向量做点积。 1 #include 2 #include 3 #include 4 us...
分类:
编程语言 时间:
2015-03-28 11:23:06
阅读次数:
179
题意:
给出一些直线。这些直线将平面分成好多块。求这些块中各个封闭图形的面积。分析:
①我们需要求出两两直线的交点;
②再对每条直线上的交点排序,藉此来离散出所有的线段(正反两条边);
③对于连向一个点的几条线段,对它们进行极角排序,相邻的两条线段我们给它们之间连一条边,我们脑补一下应该可以知道怎样可以保证逆时针连边;
④找循环,利用叉积求面积。ps.ps. vectorvector的调试...
分类:
其他好文 时间:
2015-03-14 13:55:04
阅读次数:
201
水题,根本不用凸包,就是一简单的极角排序。
叉乘
#include
#include
#include
#include
#include
using namespace std;
const int maxn=55;
struct point
{
double x,y;
} p[maxn];
double cross(point c1,point b1,poin...
分类:
编程语言 时间:
2015-03-13 10:52:53
阅读次数:
197
题目:给你平面上n个点,求最多有几个点共线。
分析:计算几何。枚举基准点,其他点按基准点极角排序(斜率排序),然后枚举相邻直线判断统计即可。
说明:时间复杂度O(n*n*lg(n))。
#include
#include
#include
#include
#include
#include
using namespace std;
typedef struct pnode...
分类:
其他好文 时间:
2015-03-09 20:55:30
阅读次数:
141
Shanghai Hypercomputers, the world's largest computer chip manufacturer, has invented a new class of nanoparticles called Amphiphilic Carbon Molecules...
分类:
编程语言 时间:
2015-03-02 18:43:18
阅读次数:
212
这是我人生中的第一个计算几何题,好好收藏一下。1、当一个点关于远点对称之后,除了两点之间的连线外,其他的任何直线都会讲两点分成两个部分2、极角排序3、线的旋转4、叉积求 sin#include #include #include #include using namespace std;class ...
分类:
其他好文 时间:
2015-02-09 10:44:59
阅读次数:
176
如果,没有紫书上的翻译的话,我觉得我可能读不懂这道题。=_=||题意:平面上有n个点,不是白点就是黑点。现在要放一条直线,使得直线一侧的白点与另一侧的黑点加起来数目最多。直线上的点可以看作位于直线的任意一侧。分析:首先假设直线经过两个点,否则可以移动直线使其经过两个点,并且总数不会减少。所以,我们可...
分类:
编程语言 时间:
2015-02-06 20:25:58
阅读次数:
247
题目大意:给出一个平面图,这个平面图中分布着一些点,可以用平面图中的边将一些点围住,问围住k个点的最小花费是多少。
思路:这题重点是平面图转对偶图。做法不难理解。先将所有的边拆成两条,枚举所有的边,若这个边没有被标记过,那么就对这条边进行搜索,弄出来以这个边为一边的平面区域,可以顺时针或者逆时针。将所有边挂在这条边的起点上,在所有点上按照每条边的极角排序,每次找的时候找大于(或小于)当前...
分类:
其他好文 时间:
2015-01-28 09:57:22
阅读次数:
358