算法设计:给定平面上n个点,计算这n个点的最短双调TSP回路.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数n,表示给定的平面上的点数.在接下来的n行中,每行2个实数,分别表示点的x坐标和y坐标.
结果输出:将计算的最短双调TSP回路的长度(保留2位小数)输出到文件output.txt.
所谓半无穷范围查询(semi-infinite range query),是教材8.4节中所介绍一般性范围查询的特例,具体地,这里的查询区域是某一侧无界的广义矩形区域,比如R=[-1,+1]x[0,﹢∞),即是对称地包含正半y坐标轴、宽度为2的一个广义矩形区域,当然,对查询的语义功能要求依然不变——从某一相对固定的点集中,找出落在任意指定区域R内部的所有点。
范围树(176页习题[8-20])稍作调整之后,固然也可交持半无穷范围查询,但若能针对这一特定问题所固有的性质,改用优先级搜索树(priority search tree,PST)之类的数据结构,则不仅可以保持O(r+logn)的最优时间效率,而且更重要的是,可以将空间复杂度从范围树的O(nlogn)优化至O(n)。
如图x10.3所示,优先级搜索树除了首先在拓扑上应是一棵二叉树,还同时遵守以下三条规则。
①首先,各节点的y坐标均不小于其左右孩子(如果存在)——因此,整体上可以视作为以y坐标为优先级的二叉堆。
②此外,相对于任一父节点,左子树中节点的x坐标均不得大于右子树中的节点。
③最后,互为兄弟的每一对左、右子树,在规模上相差不得超过一。
a)试按照以上描述,用C/C++定义并实现优先级搜索树结构;
b)试设计一个算法,在O(nlogn)时间内将平面上的n个点组织为一棵优先级搜索树;
c)试设计一个算法,利用已创建的优先级搜索树,在O(r+logn)时间内完成每次半无穷范围查询,其中r为实际命中并被报告的点数。
设计一个名为MyPoint的类表示一个具有x坐标和y坐标的点,该类包括: 两个数据域(成员变量)x和y表示坐标; 无参构造方法创建点(0,0); 一个构造方法根据指定坐标创建一个点; distance方法(static修饰)返回MyPoint类型的两个点之间的距离(方法的参数为两个MyPoint对象); distance方法返回从当前点(调用方法的对象)到另一点(方法的参数)之间的距离(方法的参数为一个MyPoint对象); 在主方法中,输入一个点,求距离原点的距离,再输入两点,求两点之间的距离。 PS:成员变量必须由private修饰,且为其定义访问方法
(本小题满分l3分)
已知过点(0,4),斜率为-1的直线l与抛物线C:y2=2px(p>;0)交于A,B两点.
(I)求C的顶点到l的距离;
(II)若线段AB中点的横坐标为6,求C的焦点坐标.
在右手直角坐标系σ1中,设两直线li:Aix+Biy+Ci=0(i=1,2)互相垂直,取l1,l2为右手直角坐标系σ2的O'y'轴,O'x'轴,试求σ2到σ1的点的坐标变换公式.
A.总平面图
B.设计说明
C.建筑平面图
D.建筑立面图
已知抛物线的对称轴是y轴,顶点A的坐标是(0,一1),并且在x轴上截得的弦lBCl=2
在这个抛物线上取两点P(不同于B点)和Q.若能使BP垂直QP ,试求点Q的横坐标的取值范围.