摘要:
题目大意:给n个点,求最远两点间距离的平方。虽然这么写的,不要去枚举啊,枚举会超时的……解题思路:1、先用Graham扫描法求一个最大凸包,(求凸包的方法也是今天刚学的)2、再用旋转卡壳法求凸包两点间的最大距离。下面是代码:#include #include struct node{ int ... 阅读全文
摘要:
题目大意:顺时针或逆时针给出n个点,问这n个点围成的图形是不是个凸多边形。如果是凸多边形,给一个圆,以圆心的坐标和半径表示,问这个圆是不是完全在凸多边形内部。解题思路:1、先判断是不是凸多边形。我们可以通过两个向量的叉积来判断第三个点在前两个点的什么方向。(见《算法艺术与信息学竞赛》第三章)因为n个... 阅读全文
摘要:
题目大意:有一个1*1的正方形,分别给出下,上,左,右边每个边上的n个点,对边对应点连线,问这些线段相交的最大的四边形面积是多少(面积最大的定义是必须当前面积内没有更小的四边形内含)。解题思路:1、我们可以用一个矩阵来保存所有的点,四边上每个点是输入的,内部的每个点通过线段交点的计算可以计算出来。2... 阅读全文
摘要:
题目大意:给一条曲折的管道,给出的形式是每一个转弯处口的坐标,求光线从入口进入能到的最远的x点,如果能穿过管子则输出“Through all the pipe.”首先要知道:1、可以通过两向量的叉积来判断是否相交。具体见《算法艺术与信息学竞赛》P348开始向后很多页。2、一条光线从入口到某一点必然会... 阅读全文
摘要:
题目大意:给出n个三维空间的球体,球体是以圆心坐标+半径来表示的,要求在球面上建桥使所有的球联通,求联通所建桥的最小长度。解题思路:刚开始看到三维的有一点蒙,不过精心想了想还是很容易的。1、两个球之间要在球面上建的通路的长度是两球圆心之间的距离减去两球半径。2、当所建通路的长度小于EPS时,就认为它... 阅读全文
摘要:
题目大意:给一个平面上的简单多边形,求边上的点,多边形内的点,多边形面积。解题思路:这个题用了很多知识点:1、以格子点为顶点的线段,覆盖的点的个数为GCD(dx,dy),其中,dxdy分别为线段横向占的点数和纵向占的点数。如果dx或dy为0,则覆盖的点数为dy或dx。2、Pick公式:平面上以格子点... 阅读全文
摘要:
题目大意:给出n个pie的直径,有f+1个人,如果给每人分的大小相同(形状可以不同),每个人可以分多少。要求是分出来的每一份必须出自同一个pie,也就是说当pie大小为3,2,1,只能分出两个大小为2的份,剩下两个要扔掉。解题思路:对每一个人分的大小进行二分查找,注意输出要用cout。下面是代码:#... 阅读全文
摘要:
题目大意:一根某种材料做的直杆被夹在两面墙之间,当他受热时长度会变长,就会因两面墙的挤压而向上隆起。长度变化函数为L'=(1+n*C)*L,给定L,C,n,求向上拱起的高度H。解题思路:这是两个最关键的计算式,可以手动计算出来。然后对h进行二分查找。注意:1、误差分析,我的是到了10^-5才可以了。... 阅读全文
摘要:
题目大意:给出河的宽度,也就是开始的石头和结束石头之间的距离,再给出n个石头到开始石头的距离,求当移除n个石头中的m块时。两块石头之间的最短距离。解题思路:对最短距离进行二分查找。下面是代码:#include #include using namespace std;int l,n,m,a[5000... 阅读全文
摘要:
题目大意:给N个数,分成M组,每一组最大值的最小值是多少。每一组数必须是连续的。解题思路:用二分法来穷举最大值,求最小。是针对最大值的上界和下界二分。下面是代码:#include int a[100005],n,m;bool does(int xian){ int sum=0,cnt=1; ... 阅读全文