﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-guodongshan-随笔分类-计算几何</title><link>http://www.cppblog.com/guodongshan/category/15091.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 12 Oct 2010 16:34:02 GMT</lastBuildDate><pubDate>Tue, 12 Oct 2010 16:34:02 GMT</pubDate><ttl>60</ttl><item><title>计算几何题目总结及分类</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/12/129624.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Tue, 12 Oct 2010 09:36:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/12/129624.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/129624.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/12/129624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/129624.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/129624.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: FOJHotter Colderhttp://acm.fzu.edu.cn/problem.php?pid=1014 求线段的中位线，线段相交求交点，求凸多边形的面积，无归之室http://acm.fzu.edu.cn/problem.php?pid=1016 本题精度要求非常高，用三角函数的话，很容易就wa..Reflectionshttp://acm.fzu.e...&nbsp;&nbsp;<a href='http://www.cppblog.com/guodongshan/archive/2010/10/12/129624.html'>阅读全文</a><img src ="http://www.cppblog.com/guodongshan/aggbug/129624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-12 17:36 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/12/129624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>任意四面体体积公式 以及几点计算几何注意事项</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/12/129595.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Tue, 12 Oct 2010 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/12/129595.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/129595.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/12/129595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/129595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/129595.html</trackback:ping><description><![CDATA[<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><v:shapetype id=_x0000_t75 stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape style="Z-INDEX: 1; POSITION: absolute; TEXT-ALIGN: left; MARGIN-TOP: 25.55pt; WIDTH: 4in; HEIGHT: 119.95pt; MARGIN-LEFT: 174.6pt; LEFT: 0px" id=_x0000_s1026 type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.wmz"></v:imagedata></v:shape><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>Euler</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">的任意四面体体积公式（已知边长求体积）<br></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"><img style="WIDTH: 193px; HEIGHT: 159px" border=0 src="http://www.cppblog.com/images/cppblog_com/guodongshan/image002.jpg" width=193 height=159><br><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/guodongshan/image001.gif" width=384 height=160><br>已知<span lang=EN-US>4</span>点坐标求体积（</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-bidi-font-size: 9.0pt">其中四个点的坐标分别为（<span lang=EN-US>x1,y1,z1</span>）<span lang=EN-US>,</span>（<span lang=EN-US>x2,y2,z2</span>）<span lang=EN-US>,</span>（<span lang=EN-US>x3,y3,z3</span>）<span lang=EN-US>,</span>（<span lang=EN-US>x4,y4,z4</span>）<br></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt"><img border=0 src="http://www.cppblog.com/images/cppblog_com/guodongshan/image003.gif"><br><br><br></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; COLOR: red; FONT-SIZE: 12pt; mso-bidi-font-size: 16.0pt">注意事项：<br><span lang=EN-US><o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>1. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">注意舍入方式<span lang=EN-US>(0.5</span>的舍入方向<span lang=EN-US>);</span>防止输出<span lang=EN-US>-0.<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>2. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">几何题注意多测试不对称数据<span lang=EN-US>.<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>3. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">整数几何注意<span lang=EN-US>xmult</span>和<span lang=EN-US>dmult</span>是否会出界<span lang=EN-US>;<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">符点几何注意<span lang=EN-US>eps</span>的使用<span lang=EN-US>.<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>4. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">避免使用斜率<span lang=EN-US>;</span>注意除数是否会为<span lang=EN-US>0.<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>5. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">公式一定要化简后再代入<span lang=EN-US>.<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>6. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">判断同一个<span lang=EN-US>2*PI</span>域内两角度差应该是<span lang=EN-US><o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR>abs(a1-a2)&lt;beta||abs(a1-a2)&gt;pi+pi-beta;<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">相等应该是</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR><o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>abs(a1-a2)&lt;eps||abs(a1-a2)&gt;pi+pi-eps;<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR>7. </span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">需要的话尽量使用</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR>atan2,</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">注意</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR>:atan2(0,0)=0,<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt; mso-ansi-language: PT-BR" lang=PT-BR><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>atan2(1,0)=pi/2,atan2(-1,0)=-pi/2,atan2(0,1)=0,atan2(0,-1)=pi.<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>8. cross product = |u|*|v|*sin(a)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>dot product = |u|*|v|*cos(a)<o:p></o:p></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US>9. (P1-P0)x(P2-P0)</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">结果的意义<span lang=EN-US>:<o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">正<span lang=EN-US>: &lt;P0,P1&gt;</span>在<span lang=EN-US>&lt;P0,P2&gt;</span>顺时针<span lang=EN-US>(0,pi)</span>内<span lang=EN-US><o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span></span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">负<span lang=EN-US>: &lt;P0,P1&gt;</span>在<span lang=EN-US>&lt;P0,P2&gt;</span>逆时针<span lang=EN-US>(0,pi)</span>内<span lang=EN-US><o:p></o:p></span></span></p>
<p style="MARGIN: 0cm 0cm 0pt" class=MsoNormal><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt" lang=EN-US><span style="mso-spacerun: yes">&nbsp;&nbsp; </span>0 : &lt;P0,P1&gt;,&lt;P0,P2&gt;</span><span style="FONT-FAMILY: 宋体; FONT-SIZE: 12pt">共线<span lang=EN-US>,</span>夹角为<span lang=EN-US>0</span>或<span lang=EN-US>pi<o:p></o:p></span></span></p>
<img src ="http://www.cppblog.com/guodongshan/aggbug/129595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-12 12:00 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/12/129595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>读陈海峰的《计算几何算法概览》</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/12/129568.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Tue, 12 Oct 2010 02:18:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/12/129568.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/129568.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/12/129568.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/129568.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/129568.html</trackback:ping><description><![CDATA[原文链接：<a href="http://cschf.spaces.live.com/blog/cns!E113B8D05D833E2B!140.entry" target=_blank>http://cschf.spaces.live.com/blog/cns!E113B8D05D833E2B!140.entry</a><br>写几点不熟悉的<br>12. 判断点是否在多边形中<br>13. 判断线段是否在多边形内<br>25. 计算线段或直线与线段的交点<br>27. 求线段或直线与圆的交点<br><br><a><strong>判断点是否在多边形中</strong></a><strong>：</strong>
<p style="FONT-SIZE: 12pt">判断点P是否在多边形中是计算几何中一个非常基本但是十分重要的算法。以点P为端点，向左方作射线L，由于多边形是有界的，所以射线L的左端一定在多边形外，考虑沿着L从无穷远处开始自左向右移动，遇到和多边形的第一个交点的时候，进入到了多边形的内部，遇到第二个交点的时候，离开了多边形，&#8230;&#8230;所以很容易看出当L和多边形的交点数目C是奇数的时候，P在多边形内，是偶数的话P在多边形外。</p>
<p>但是有些特殊情况要加以考虑。如图下图(a)(b)(c)(d)所示。在图(a)中，L和多边形的顶点相交，这时候交点只能计算一个；在图(b)中，L和多边形顶点的交点不应被计算；在图(c)和(d) 中，L和多边形的一条边重合，这条边应该被忽略不计。如果L和多边形的一条边重合，这条边应该被忽略不计。</p>
<p><img style="WIDTH: 300px; HEIGHT: 600px" src="http://i3.6.cn/cvbnm/f2/cc/f0/81fb54609cf280e08ad583de8a667e02.jpg" width=300 height=600> </p>
<p>为了统一起见，我们在计算射线L和多边形的交点的时候，1。对于多边形的水平边不作考虑；2。对于多边形的顶点和L相交的情况，如果该顶点是其所属的边上纵坐标较大的顶点，则计数，否则忽略；3。对于P在多边形边上的情形，直接可判断P属于多边行。由此得出算法的伪代码如下： <br>&nbsp;&nbsp;&nbsp; count &#8592; 0; <br>&nbsp;&nbsp;&nbsp; 以P为端点，作从右向左的射线L;&nbsp; <br>&nbsp;&nbsp;&nbsp; for 多边形的每条边s <br>&nbsp;&nbsp;&nbsp;&nbsp; do if P在边s上&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then return true; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if s不是水平的 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then if s的一个端点在L上 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if 该端点是s两端点中纵坐标较大的端点 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then count &#8592; count+1 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if s和L相交 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then count &#8592; count+1; <br>&nbsp;&nbsp;&nbsp; if count mod 2 = 1&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then return true; <br>&nbsp;&nbsp;&nbsp; else return false; <br>其中做射线L的方法是：设P'的纵坐标和P相同，横坐标为正无穷大（很大的一个正数），则P和P'就确定了射线L。 </p>
<p>判断点是否在多边形中的这个算法的时间复杂度为O(n)。</p>
<p>另外还有一种算法是用带符号的三角形面积之和与多边形面积进行比较，这种算法由于使用浮点数运算所以会带来一定误差，不推荐大家使用。 </p>
<p><a><br><strong>判断线段是否在多边形内</strong></a><strong>：</strong></p>
<p>线段在多边形内的一个必要条件是线段的两个端点都在多边形内，但由于多边形可能为凹，所以这不能成为判断的充分条件。如果线段和多边形的某条边内交（两线段内交是指两线段相交且交点不在两线段的端点），因为多边形的边的左右两侧分属多边形内外不同部分，所以线段一定会有一部分在多边形外(见图a)。于是我们得到线段在多边形内的第二个必要条件：线段和多边形的所有边都不内交。 </p>
<p>线段和多边形交于线段的两端点并不会影响线段是否在多边形内；但是如果多边形的某个顶点和线段相交，还必须判断两相邻交点之间的线段是否包含于多边形内部（反例见图b)。 </p>
<p>&nbsp;<img src="http://i3.6.cn/cvbnm/a4/50/b0/79afe28e6ea3a00c4678214bc2083c4b.jpg"> </p>
<p>因此我们可以先求出所有和线段相交的多边形的顶点，然后按照X-Y坐标排序(X坐标小的排在前面，对于X坐标相同的点，Y坐标小的排在前面，这种排序准则也是为了保证水平和垂直情况的判断正确)，这样相邻的两个点就是在线段上相邻的两交点，如果任意相邻两点的中点也在多边形内，则该线段一定在多边形内。 </p>
<p>证明如下：</p>
<p>命题1： <br>如果线段和多边形的两相邻交点P1 ，P2的中点P' 也在多边形内，则P1, P2之间的所有点都在多边形内。</p>
<p>证明： <br>假设P1,P2之间含有不在多边形内的点，不妨设该点为Q，在P1, P'之间，因为多边形是闭合曲线，所以其内外部之间有界，而P1属于多边行内部，Q属于多边性外部，P'属于多边性内部，P1-Q-P'完全连续，所以P1Q和QP'一定跨越多边形的边界，因此在P1,P'之间至少还有两个该线段和多边形的交点，这和P1P2是相邻两交点矛盾，故命题成立。证毕。 </p>
<p>由命题1直接可得出推论： <br>推论2： <br>设多边形和线段PQ的交点依次为P1,P2,&#8230;&#8230;Pn，其中Pi和Pi+1是相邻两交点，线段PQ在多边形内的充要条件是：P，Q在多边形内且对于i =1, 2,&#8230;&#8230;, n-1，Pi ,Pi+1的中点也在多边形内。 <br>在实际编程中，没有必要计算所有的交点，首先应判断线段和多边形的边是否内交，倘若线段和多边形的某条边内交则线段一定在多边形外；如果线段和多边形的每一条边都不内交，则线段和多边形的交点一定是线段的端点或者多边形的顶点，只要判断点是否在线段上就可以了。 <br>至此我们得出算法如下： <br>&nbsp;&nbsp;&nbsp; if 线端PQ的端点不都在多边形内&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then return false; <br>&nbsp;&nbsp;&nbsp; 点集pointSet初始化为空; <br>&nbsp;&nbsp;&nbsp; for 多边形的每条边s <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do if 线段的某个端点在s上 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then 将该端点加入pointSet; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if s的某个端点在线段PQ上 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then 将该端点加入pointSet; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if s和线段PQ相交 // 这时候已经可以肯定是内交了 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then return false; <br>&nbsp;&nbsp;&nbsp; 将pointSet中的点按照X-Y坐标排序; <br>&nbsp;&nbsp;&nbsp; for pointSet中每两个相邻点 pointSet[i] , pointSet[ i+1] <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; do if pointSet[i] , pointSet[ i+1] 的中点不在多边形中 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; then return false; <br>&nbsp;&nbsp;&nbsp; return true; <br>这个过程中的排序因为交点数目肯定远小于多边形的顶点数目n，所以最多是常数级的复杂度，几乎可以忽略不计。因此算法的时间复杂度也是O(n)。</p>
<br>
<p><strong><a><font style="COLOR: #000000" color=#0066a7>计算线段或直线与线段的交点</font></a>:</strong></p>
<p>设一条线段为L0 = P1P2，另一条线段或直线为L1 = Q1Q2 ，要计算的就是L0和L1的交点。 <br>1． 首先判断L0和L1是否相交（方法已在前文讨论过），如果不相交则没有交点，否则说明L0和L1一定有交点，下面就将L0和L1都看作直线来考虑。 </p>
<p>2． 如果P1和P2横坐标相同，即L0平行于Y轴 </p>
<p>a) 若L1也平行于Y轴， </p>
<p>i. 若P1的纵坐标和Q1的纵坐标相同，说明L0和L1共线，假如L1是直线的话他们有无穷的交点，假如L1是线段的话可用"计算两条共线线段的交点"的算法求他们的交点（该方法在前文已讨论过）； <br>ii. 否则说明L0和L1平行，他们没有交点； </p>
<p>b) 若L1不平行于Y轴，则交点横坐标为P1的横坐标，代入到L1的直线方程中可以计算出交点纵坐标； </p>
<p>3． 如果P1和P2横坐标不同，但是Q1和Q2横坐标相同，即L1平行于Y轴，则交点横坐标为Q1的横坐标，代入到L0的直线方程中可以计算出交点纵坐标； </p>
<p>4． 如果P1和P2纵坐标相同，即L0平行于X轴 </p>
<p>a) 若L1也平行于X轴， </p>
<p>i. 若P1的横坐标和Q1的横坐标相同，说明L0和L1共线，假如L1是直线的话他们有无穷的交点，假如L1是线段的话可用"计算两条共线线段的交点"的算法求他们的交点（该方法在前文已讨论过）； <br>ii. 否则说明L0和L1平行，他们没有交点； </p>
<p>b) 若L1不平行于X轴，则交点纵坐标为P1的纵坐标，代入到L1的直线方程中可以计算出交点横坐标； </p>
<p>5． 如果P1和P2纵坐标不同，但是Q1和Q2纵坐标相同，即L1平行于X轴，则交点纵坐标为Q1的纵坐标，代入到L0的直线方程中可以计算出交点横坐标； </p>
<p>6． 剩下的情况就是L1和L0的斜率均存在且不为0的情况 </p>
<p>a) 计算出L0的斜率K0，L1的斜率K1 ； </p>
<p>b) 如果K1 = K2&nbsp; </p>
<p>i. 如果Q1在L0上，则说明L0和L1共线，假如L1是直线的话有无穷交点，假如L1是线段的话可用"计算两条共线线段的交点"的算法求他们的交点（该方法在前文已讨论过）； <br>ii. 如果Q1不在L0上，则说明L0和L1平行，他们没有交点。 <br>c) 联立两直线的方程组可以解出交点来 <br>这个算法并不复杂，但是要分情况讨论清楚，尤其是当两条线段共线的情况需要单独考虑，所以在前文将求两条共线线段的算法单独写出来。另外，一开始就先利用矢量叉乘判断线段与线段（或直线）是否相交，如果结果是相交，那么在后面就可以将线段全部看作直线来考虑。需要注意的是，我们可以将直线或线段方程改写为ax+by+c=0的形式，这样一来上述过程的部分步骤可以合并，缩短了代码长度，但是由于先要求出参数，这种算法将花费更多的时间。 <br></p>
<p><strong><a><font style="COLOR: #000000" color=#0066a7>求线段或直线与圆的交点</font></a>:</strong></p>
<p>设圆心为O，圆半径为r，直线（或线段）L上的两点为P1,P2。 </p>
<p>1. 如果L是线段且P1，P2都包含在圆O内，则没有交点；否则进行下一步。 </p>
<p>2. 如果L平行于Y轴， </p>
<p>a) 计算圆心到L的距离dis； <br>b) 如果dis &gt; r 则L和圆没有交点； <br>c) 利用勾股定理，可以求出两交点坐标，但要注意考虑L和圆的相切情况。 <br>3. 如果L平行于X轴，做法与L平行于Y轴的情况类似； </p>
<p>4. 如果L既不平行X轴也不平行Y轴，可以求出L的斜率K，然后列出L的点斜式方程，和圆方程联立即可求解出L和圆的两个交点； </p>
<p>5. 如果L是线段，对于2，3，4中求出的交点还要分别判断是否属于该线段的范围内。</p>
<img src ="http://www.cppblog.com/guodongshan/aggbug/129568.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-12 10:18 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/12/129568.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二维下计算几何分类</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/12/129563.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Tue, 12 Oct 2010 01:52:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/12/129563.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/129563.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/12/129563.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/129563.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/129563.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 12pt">一、点的基本运算 <br>1. 平面上两点之间距离 1 <br>2. 判断两点是否重合 1 <br>3. 矢量叉乘 1 <br>4. 矢量点乘 2 <br>5. 判断点是否在线段上 2 <br>6. 求一点饶某点旋转后的坐标 2 <br>7. 求矢量夹角 2 <br></p>
<p style="FONT-SIZE: 12pt">二、&nbsp;线段及直线的基本运算 <br>1. 点与线段的关系 3 <br>2. 求点到线段所在直线垂线的垂足 4 <br>3. 点到线段的最近点 4 <br>4. 点到线段所在直线的距离 4 <br>5. 点到折线集的最近距离 4 <br>6. 判断圆是否在多边形内 5 <br>7. 求矢量夹角余弦 5 <br>8. 求线段之间的夹角 5 <br>9. 判断线段是否相交 6 <br>10.判断线段是否相交但不交在端点处（内交） 6 <br>11.求线段所在直线的方程 6 <br>12.求直线的斜率 7 <br>13.求直线的倾斜角 7 <br>14.求点关于某直线的对称点 7 <br>15.判断两条直线是否相交及求直线交点 7 <br>16.判断线段是否相交，如果相交返回交点 7 <br><br><span style="FONT-SIZE: 12pt">三、多边形常用算法模块 <br>1. 判断多边形是否简单多边形 8 <br>2. 检查多边形顶点的凸凹性 9 <br>3. 判断多边形是否凸多边形 9 <br>4. 求多边形面积 9 <br>5. 判断多边形顶点的排列方向，方法一 10 <br>6. 判断多边形顶点的排列方向，方法二 10 <br>7. 射线法判断点是否在多边形内 10 <br>8. 判断点是否在凸多边形内 11 <br>9. 寻找点集的graham算法 12 <br>10.寻找点集凸包的卷包裹法 13 <br>11.判断线段是否在多边形内 14 <br>12.求简单多边形的重心 （HDU1115）15 <br>13.求凸多边形的重心 17 <br>14.求肯定在给定多边形内的一个点 17 <br>15.求从多边形外一点出发到该多边形的切线 18 <br>16.判断多边形的核是否存在 19&nbsp;<br><br>四、 圆的基本运算 <br>1 .点是否在圆内 20 <br>2 .求不共线的三点所确定的圆 21 <br><br>五、矩形的基本运算 <br>1.已知矩形三点坐标，求第4点坐标 22 <br><br>六、常用算法的描述 22 <br><br>七、补充 <br>1．两圆关系： 24 <br>2．判断圆是否在矩形内： 24 <br>3．点到平面的距离： 25 <br>4．点是否在直线同侧： 25 <br>5．镜面反射线： 25 <br>6．矩形包含： 26 <br>7．两圆交点： 27 <br>8．两圆公共面积： 28 <br>9. 圆和直线关系： 29 <br>10. 内切圆： 30 <br>11. 求切点： 31 <br>12. 线段的左右旋： 31 <br>13．公式： 32 <br><br>附上一篇博客：</span><a href="http://cschf.spaces.live.com/blog/cns!E113B8D05D833E2B!140.entry" target=_blank><span style="FONT-SIZE: 12pt">计算几何算法概览</span></a><span style="FONT-SIZE: 12pt">&nbsp;<br><br>&nbsp; </p>
<p align=left><a href="http://www.oibh.org/bbs/misc.php?action=viewratings&amp;tid=2958&amp;pid=32884"></a><span>zoj</span><span>上的计算几何题</span><span><br>Vol I <br>1010 by pandahyx <br>1032 by javaman <br>1037 by Vegetable Bird <br>1041 by javaman <br>1081 by Vegetable Bird <br>1090 by Vegetable Bird <br><br>Vol II <br>1104 by javaman <br>1123 by javaman <br>1139 by Vegetable Bird <br>1165 by javaman <br>1199 by Vegetable Bird <br><br>Vol V <br>1426 by Vegetable Bird <br>1439 by Vegetable Bird <br>1460 by Vegetable Bird <br>1472 by Vegetable Bird <br><br>Vol VI <br>1597 by Vegetable Bird <br><br>Vol VII <br>1608 by Vegetable Bird <br>1648 by Vegetable Bird <br><br>Vol XII <br>2102 by pandahyx <br>2107 by pandahyx <br>2157 by pandahyx <br><br>Vol XIII <br>2234 by pandahyx <br><br>Vol XIV <br>2318 by ahyangyi <br>2394 by qherlyt <br><br>Vol XV <br>2403 by Vegetable Bird </span></span></p>
<img src ="http://www.cppblog.com/guodongshan/aggbug/129563.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-12 09:52 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/12/129563.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>判断点是否在三角形内</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/12/129558.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Tue, 12 Oct 2010 01:40:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/12/129558.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/129558.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/12/129558.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/129558.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/129558.html</trackback:ping><description><![CDATA[&nbsp;1.&nbsp; 一种是用矢量叉乘法：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由三个顶点向所求的点引出矢量（注意方向），然后任意用其中两个矢量形成平面，再用这个平面和剩下的矢量叉乘，得出一个新矢量，方向向里，则在三角形外，反之在里面。 <br>2.用面积方法<br><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">math.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_49_77_Open_Image onclick="this.style.display='none'; Codehighlighter1_49_77_Open_Text.style.display='none'; Codehighlighter1_49_77_Closed_Image.style.display='inline'; Codehighlighter1_49_77_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_49_77_Closed_Image onclick="this.style.display='none'; Codehighlighter1_49_77_Closed_Text.style.display='none'; Codehighlighter1_49_77_Open_Image.style.display='inline'; Codehighlighter1_49_77_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_49_77_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_49_77_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;x;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;y;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">求叉积</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_151_223_Open_Image onclick="this.style.display='none'; Codehighlighter1_151_223_Open_Text.style.display='none'; Codehighlighter1_151_223_Closed_Image.style.display='inline'; Codehighlighter1_151_223_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_151_223_Closed_Image onclick="this.style.display='none'; Codehighlighter1_151_223_Closed_Text.style.display='none'; Codehighlighter1_151_223_Open_Image.style.display='inline'; Codehighlighter1_151_223_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;mul(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p1,&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p2,&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p0)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_151_223_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_151_223_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;((p1.x&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p0.x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p2.y&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p0.y)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">(p2.x&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p0.x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p1.y&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p0.y));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_225_312_Open_Image onclick="this.style.display='none'; Codehighlighter1_225_312_Open_Text.style.display='none'; Codehighlighter1_225_312_Closed_Image.style.display='inline'; Codehighlighter1_225_312_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_225_312_Closed_Image onclick="this.style.display='none'; Codehighlighter1_225_312_Closed_Text.style.display='none'; Codehighlighter1_225_312_Open_Image.style.display='inline'; Codehighlighter1_225_312_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_225_312_Closed_Text>/**/</span><span id=Codehighlighter1_225_312_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">由三个顶点向所求的点引出矢量（注意方向），然后任意用其中两个矢量形成平面，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;*&nbsp;再用这个平面和剩下的矢量叉乘，得出一个新矢量，方向向里，则在三角形外，反之在里面。<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_362_530_Open_Image onclick="this.style.display='none'; Codehighlighter1_362_530_Open_Text.style.display='none'; Codehighlighter1_362_530_Closed_Image.style.display='inline'; Codehighlighter1_362_530_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_362_530_Closed_Image onclick="this.style.display='none'; Codehighlighter1_362_530_Closed_Text.style.display='none'; Codehighlighter1_362_530_Open_Image.style.display='inline'; Codehighlighter1_362_530_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;inside(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;tr[],&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_362_530_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_362_530_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(mul(p,&nbsp;tr[i],&nbsp;tr[(i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;mul(p,&nbsp;tr[(i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">],&nbsp;tr[(i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_598_674_Open_Image onclick="this.style.display='none'; Codehighlighter1_598_674_Open_Text.style.display='none'; Codehighlighter1_598_674_Closed_Image.style.display='inline'; Codehighlighter1_598_674_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_598_674_Closed_Image onclick="this.style.display='none'; Codehighlighter1_598_674_Closed_Text.style.display='none'; Codehighlighter1_598_674_Open_Image.style.display='inline'; Codehighlighter1_598_674_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;area(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p1,&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p2,&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p3)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_598_674_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_598_674_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;fabs((p1.x&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p3.x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p2.y&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p3.y)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">(p2.x&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p3.x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p1.y&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;p3.y));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">用面积判断p是否在三角形内</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_741_947_Open_Image onclick="this.style.display='none'; Codehighlighter1_741_947_Open_Text.style.display='none'; Codehighlighter1_741_947_Closed_Image.style.display='inline'; Codehighlighter1_741_947_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_741_947_Closed_Image onclick="this.style.display='none'; Codehighlighter1_741_947_Closed_Text.style.display='none'; Codehighlighter1_741_947_Open_Image.style.display='inline'; Codehighlighter1_741_947_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;inside2(</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;tr[],&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;p)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_741_947_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_741_947_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(fabs(area(tr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;tr[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;tr[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;area(p,&nbsp;tr[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;tr[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;area(tr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;p,&nbsp;tr[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;area(tr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">],&nbsp;tr[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;p))&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1.0e-20</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_961_1276_Open_Image onclick="this.style.display='none'; Codehighlighter1_961_1276_Open_Text.style.display='none'; Codehighlighter1_961_1276_Closed_Image.style.display='inline'; Codehighlighter1_961_1276_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_961_1276_Closed_Image onclick="this.style.display='none'; Codehighlighter1_961_1276_Closed_Text.style.display='none'; Codehighlighter1_961_1276_Open_Image.style.display='inline'; Codehighlighter1_961_1276_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_961_1276_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_961_1276_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_989_1011_Open_Image onclick="this.style.display='none'; Codehighlighter1_989_1011_Open_Text.style.display='none'; Codehighlighter1_989_1011_Closed_Image.style.display='inline'; Codehighlighter1_989_1011_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_989_1011_Closed_Image onclick="this.style.display='none'; Codehighlighter1_989_1011_Closed_Text.style.display='none'; Codehighlighter1_989_1011_Open_Image.style.display='inline'; Codehighlighter1_989_1011_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;TPoint&nbsp;tr[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_989_1011_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_989_1011_Open_Text><span style="COLOR: #000000">{</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_990_996_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_990_996_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">,</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_998_1003_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_998_1003_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">,</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1005_1010_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1005_1010_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">,&nbsp;&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1019_1024_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1019_1024_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法一</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">algorithm&nbsp;&nbsp;&nbsp;1:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(inside(tr,&nbsp;p))<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">In\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Out\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">方法一</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">algorithm&nbsp;&nbsp;&nbsp;2:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(inside2(tr,&nbsp;p))<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">In\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Out\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/guodongshan/aggbug/129558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-12 09:40 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/12/129558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOJ3414 Trail Walk 简单计算几何</title><link>http://www.cppblog.com/guodongshan/archive/2010/10/07/128942.html</link><dc:creator>孟起</dc:creator><author>孟起</author><pubDate>Thu, 07 Oct 2010 10:25:00 GMT</pubDate><guid>http://www.cppblog.com/guodongshan/archive/2010/10/07/128942.html</guid><wfw:comment>http://www.cppblog.com/guodongshan/comments/128942.html</wfw:comment><comments>http://www.cppblog.com/guodongshan/archive/2010/10/07/128942.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/guodongshan/comments/commentRss/128942.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/guodongshan/services/trackbacks/128942.html</trackback:ping><description><![CDATA[把在n条线段中（以（0,0）为起点）放入m个点，使其等分为m+1份。<br><a href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3414" target=_blank>http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3414</a><br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">math.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_47_69_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_69_Open_Text.style.display='none'; Codehighlighter1_47_69_Closed_Image.style.display='inline'; Codehighlighter1_47_69_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_47_69_Closed_Image onclick="this.style.display='none'; Codehighlighter1_47_69_Closed_Text.style.display='none'; Codehighlighter1_47_69_Open_Image.style.display='inline'; Codehighlighter1_47_69_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;point</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_47_69_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_47_69_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;x,y,len;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">p[</span><span style="COLOR: #000000">1002</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_90_1232_Open_Image onclick="this.style.display='none'; Codehighlighter1_90_1232_Open_Text.style.display='none'; Codehighlighter1_90_1232_Closed_Image.style.display='inline'; Codehighlighter1_90_1232_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_90_1232_Closed_Image onclick="this.style.display='none'; Codehighlighter1_90_1232_Closed_Text.style.display='none'; Codehighlighter1_90_1232_Open_Image.style.display='inline'; Codehighlighter1_90_1232_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_90_1232_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_90_1232_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m,i,j,ca</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;ave,len,ax,ay;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m)</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">EOF)<br><img id=Codehighlighter1_180_1216_Open_Image onclick="this.style.display='none'; Codehighlighter1_180_1216_Open_Text.style.display='none'; Codehighlighter1_180_1216_Closed_Image.style.display='inline'; Codehighlighter1_180_1216_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_180_1216_Closed_Image onclick="this.style.display='none'; Codehighlighter1_180_1216_Closed_Text.style.display='none'; Codehighlighter1_180_1216_Open_Image.style.display='inline'; Codehighlighter1_180_1216_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_180_1216_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_180_1216_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].x</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">].y</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;ave</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_242_490_Open_Image onclick="this.style.display='none'; Codehighlighter1_242_490_Open_Text.style.display='none'; Codehighlighter1_242_490_Closed_Image.style.display='inline'; Codehighlighter1_242_490_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_242_490_Closed_Image onclick="this.style.display='none'; Codehighlighter1_242_490_Closed_Text.style.display='none'; Codehighlighter1_242_490_Open_Image.style.display='inline'; Codehighlighter1_242_490_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_242_490_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_242_490_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%lf%lf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p[i].x,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p[i].y);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i].len</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">sqrt((p[i].x</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[i].x</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].x)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(p[i].y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].y)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[i].y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].y));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">printf("%.3f&nbsp;%.3f&nbsp;%.3f\n",p[i].x,p[i].y,p[i].len);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ave</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">p[i].len;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ave</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">(m</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">每一份的均长</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">沿着线段走<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;printf("%.3f\n",ave);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Route&nbsp;%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ca</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">m;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_646_1210_Open_Image onclick="this.style.display='none'; Codehighlighter1_646_1210_Open_Text.style.display='none'; Codehighlighter1_646_1210_Closed_Image.style.display='inline'; Codehighlighter1_646_1210_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_646_1210_Closed_Image onclick="this.style.display='none'; Codehighlighter1_646_1210_Closed_Text.style.display='none'; Codehighlighter1_646_1210_Open_Image.style.display='inline'; Codehighlighter1_646_1210_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_646_1210_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_646_1210_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(;&nbsp;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_706_819_Open_Image onclick="this.style.display='none'; Codehighlighter1_706_819_Open_Text.style.display='none'; Codehighlighter1_706_819_Closed_Image.style.display='inline'; Codehighlighter1_706_819_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_706_819_Closed_Image onclick="this.style.display='none'; Codehighlighter1_706_819_Closed_Text.style.display='none'; Codehighlighter1_706_819_Open_Image.style.display='inline'; Codehighlighter1_706_819_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_706_819_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_706_819_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(len</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].len</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">ave)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].len;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;res</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ave</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">len;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">printf("%d&nbsp;%.3f\n",j,res);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ax</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">p[j].x</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(res</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].len)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].x</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].x);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ay</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">p[j].y</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(res</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].len)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].y);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CP%d:&nbsp;(%.3lf,&nbsp;%.3lf)\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i,ax,ay);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[j].x</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ax;&nbsp;p[j].y</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ay;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].len</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">sqrt((p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].x</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].x)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].x</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].x)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">(p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].y)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">].y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">p[j].y));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/guodongshan/aggbug/128942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/guodongshan/" target="_blank">孟起</a> 2010-10-07 18:25 <a href="http://www.cppblog.com/guodongshan/archive/2010/10/07/128942.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>