摘要:
...... 阅读全文
摘要:
POJ2954----pick定理+GCD···链接:http://poj.org/problem?id=2954PICK定理,一个很重要也很方便的定理:在一个平面直角坐标系内,以整点为顶点的简单多边形(任两边不交叉),它内部整点数为a,它的边上(包括顶点)的整点数为b,则它的面积S = a+b/2-1.具体证明就不说了,也不难。。这道题再加上多边形的整点的关系什么的,反正就是用GCD求了。。面积依然直接叉积,不过要注意取绝对值。 1 //poj-2954 2 #include<iostream> 3 #include<cstdio> 4 阅读全文
摘要:
好早以前看的,现在再记下来吧,当做复习一遍。那么,先提一下最基本最暴力的求凸包直径的方法吧---枚举。。。好吧。。很多问题都可以用 枚举 这个“万能”的方法来解决,过程很简单方便是肯定的,不过在效率上就要差很远了。 要求一个点集的直径,即使先计算出这个点集的凸包,然后再枚举凸包上的点对,这样来求点集直径的话依然会在凸包上点的数量达到O(n)级别是极大的降低它的效率,也浪费了凸包的优美性质。不过在数据量较小或者很适合时,何必要大费周折的用那些麻烦复杂的算法呢,枚举依然是解决问题的很好的方法之一。然后就是今天的旋转卡壳算法了。(那个字念 qia 。。。搞了好久才发现读都读错了。囧。。。)旋转卡壳可 阅读全文
摘要:
题目链接:http://poj.org/problem?id=1228 这道题算是很好的一道凸包的题吧,做完后会加深对凸包的理解。 题意很关键。。。这英语看了好几遍才差不多看明白了。意思就是给你一堆点,这堆点本来就是某个凸包上的部分点,问你这堆点是否能确定唯一的凸包(大概这意思吧。。。)。后来搜了一下,发现这种凸包叫做稳定凸包。 首先来了解什么是稳定的凸包。比如有4个点:这四个点是某个凸包上的部分点,他们连起来后确实还是一个凸包。但是原始的凸包可能不是这样。比如:即这四个点构成的凸包不算做“稳定”的。我们发现,当凸包上存在一条边上的点只有端点两个点的时候,这个凸包不是稳定的,因为它可以在这条. 阅读全文
摘要:
(好吧。。。第一篇blog,之前没有写的习惯,现在还是开始慢慢记录下来吧~) 所谓最近点对呢,就是平面上给你一堆点,然后求出这堆点中相距最小的距离。 假如数据量比较小的话,那肯定是枚举所有点对求出各自距离再比较更方便了。很明显,枚举的时间复杂度是O(n²)。不过一般不会给你这样的问题,点的个数往往很多,那就必然不能用枚举了。 这里要使用一种O(nlog(n))的算法。 这个算法主要思想就是分治, 算法描述:已知一个点的集合S,将S拆分成左右两部分求最近点对。首先对点集S进行排序,一般对点的X坐标从小到大排。算法每次选取一条直线(垂线)L,将S拆分成左右两部分Sl,Sr。L一般取点集S 阅读全文