加载中…
  
博文
标签:

坐标转换

旋转

it

分类: 数学知识

    几何题有时会要求我们对坐标系中的点进行旋转,给出角度,或者以某一条直线为新的坐标轴。

    对旋转问题,我们可以用三角函数等解决,但是精度问题难以解决。

    学习了解析几何部分知识以后,我想到了一种能避免出现小数的方法。

 

    例:给出一条直线和一些点的坐标。问该直线是否这些点的对称轴。

   

    分析:以该直线为x'轴,以其某条垂线为y'轴,将所有点的新坐标求出来,再用哈希判断即可。关键是坐标转换。

    已知两个点,如何确定过这两个点的直线?

    设直线为Ax+By+C=0,两点分别为(x0,y0),(x1,y1)。

    则有:Ax0+By0+C=0   …… 

          Ax1+By1+C=0   …… 

    ①-②得  (x0-x1)A + (y0-y1)B = 0

    令A = y0-y1,B = x1-x0则可满足条件,此时代

(2011-12-23 19:51)
标签:

树链剖分

分类: 各种算法

    “在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。

    树链,就是树上的路径。剖分,就是把路径分类为重链轻链
    记siz[v]表示以v为根的子树的节点数,dep[v]表示v的深度(根深度为1),top[v]表示v所在的重链的顶端节点,fa[v]表示v的父亲,son[v]表示与v在同一重链上的v的儿子节点(姑且称为重儿子),w[v]表示v与其父亲节点的连边(姑且称为v的父边)在线段树中的位置。只要把这些东西求出来,就能用logn的时间完成原问题中的操作。

    重儿子:siz[u]为v的子节点中siz值最大的,那么u就是v的重儿子。
    轻儿子:v的其它子节点。
   

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有