﻿<?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++博客-哲学与程序</title><link>http://www.cppblog.com/patriking/</link><description /><language>zh-cn</language><lastBuildDate>Tue, 07 Apr 2026 07:49:38 GMT</lastBuildDate><pubDate>Tue, 07 Apr 2026 07:49:38 GMT</pubDate><ttl>60</ttl><item><title>常用数据结构 可视化</title><link>http://www.cppblog.com/patriking/archive/2012/01/01/163364.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sun, 01 Jan 2012 13:40:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2012/01/01/163364.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/163364.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2012/01/01/163364.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/163364.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/163364.html</trackback:ping><description><![CDATA[<p><strong><span style="font-size: medium">本文转载至：<a href="http://zhexue.sinaapp.com/?p=154">http://zhexue.sinaapp.com/?p=154</a></span></strong></p> <p><strong><span style="font-size: medium">基础</span></strong></p> <p><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FStackArray.html">Stack栈: 数组实现</a></span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FStackLL.html">Stack栈: 链表实现</a></span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FQueueArray.html">Queues队列: 数组实现</a></span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FQueueLL.html">Queues队列: 链表实现</a></span> <br><span style="font-size: medium">Lists列表: 数组实现 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版演示)</span> <br><span style="font-size: medium">Lists列表: 链表实现 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版演示)</span></p> <p><strong><span style="font-size: medium">索引</span></strong> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBST.html">Binary Search Trees</a> 二叉检索树</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FAVLTree.html">AVL Trees (平衡二叉检索树)</a></span> <br><span style="font-size: medium">Red-Black Trees 红黑树 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fflash.html">flash</a> 版本演示)</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FOpenHash.html">Open Hash Tables 开放哈希表(Closed Addressing 链地址法)</a></span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FClosedHash.html">Closed Hash Tables&nbsp; 闭合哈希表 (Open Addressing 开放定址法)</a></span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FClosedHashBucket.html">Closed Hash Tables, using buckets</a> 使用桶</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBTree.html">B Trees</a> B树</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBPlusTree.html">B+ Trees</a> B+树</span></p> <p><strong><span style="font-size: medium">排序</span></strong> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FComparisonSort.html">Comparison Sorting</a> 比较式排序</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBucketSort.html">Bucket Sort</a> 桶排序</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FCountingSort.html">Counting Sort</a> 计数排序</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FRadixSort.html">Radix Sort</a> 基数排序</span></p> <p><strong><span style="font-size: medium">堆数据结构</span></strong> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FHeap.html">Heaps</a> 堆</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBinomialQueue.html">Binomial Queues</a> 二项队列</span></p> <p><strong><span style="font-size: medium">图算法</span></strong> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FBFS.html">Breadth-First Search</a> 广度优先搜索</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FDFS.html">Depth-First Search</a> 深度优先搜索</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FConnectedComponent.html">Connected Components</a> 连通性</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FDijkstra.html">Dijkstra’s Shortest Path</a> Dijkstra最短路径</span> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FPrim.html">Prim’s Minimum Cost Spanning Tree</a> 最小生成树</span> <br><span style="font-size: medium">Topological Sort&nbsp; 拓扑排序 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fflash.html">flash</a> 版本演示&nbsp; <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版本演示)</span> <br><span style="font-size: medium">Floyd-Warshall 算法(解决任意两点间的最短路径的一种算法) (<a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fflash.html">flash</a> 版本演示 <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版本演示)</span> <br><span style="font-size: medium">基于<em>Kruskal</em>算法的最小生成树的构建 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fflash.html">flash</a> 版本演示 <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版本演示)</span></p> <p><strong><span style="font-size: medium">动态规划</span></strong> <br><span style="font-size: medium">计算 Fibonacci 数 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版本演示)</span></p> <p><strong><span style="font-size: medium">其它…</span></strong> <br><span style="font-size: medium"><a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2FDisjointSets.html">Disjoint Sets</a> （MIT算法公开课中有一课讨论的是这个，见<a href="http://v.163.com%2Fmovie%2F2010%2F12%2FV%2FE%2FM6UTT5U0I_M6V2UDUVE.html">网易公开课</a>）</span> <br><span style="font-size: medium">Huffman Coding 哈夫曼编码 ( <a href="http://www.cs.usfca.edu%2F%7Egalles%2Fvisualization%2Fjava%2Fvisualization.html">java</a> 版本演示)</span></p> <p><span style="font-size: medium">原始页面见：<a href="http://www.cs.usfca.edu/~galles/visualization/Algorithms.html">http://www.cs.usfca.edu/~galles/visualization/Algorithms.html</a></span></p><img src ="http://www.cppblog.com/patriking/aggbug/163364.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2012-01-01 21:40 <a href="http://www.cppblog.com/patriking/archive/2012/01/01/163364.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《科学》评出年度科学突破 HIV防御方法居首</title><link>http://www.cppblog.com/patriking/archive/2012/01/01/163338.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sun, 01 Jan 2012 03:06:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2012/01/01/163338.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/163338.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2012/01/01/163338.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/163338.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/163338.html</trackback:ping><description><![CDATA[<div><span style="font-size: medium">本文转载至：<a href="http://zhexue.sinaapp.com/?p=148">http://zhexue.sinaapp.com/?p=148</a></span></div> <div><span style="font-size: medium">《科学》杂志称赞一项令人大开眼界的叫做HPTN 052的HIV研究为2011年最重要的科学突破。这一临床试验表明，感染了HIV的人如果服用抗逆转录病毒药物（ARVs）的话，他们将病毒传播给其伴侣的可能性要降低96%。</span></div> <div></div> <div><span style="font-size: medium">这些发现终结了一个长期存在的争论，即ARVs是否可以在治疗病人体内病毒的同时也降低病毒的传播率而提供一种双重的裨益。研究人员同意，现在已经清楚，ARVs可治疗及预防HIV。</span></div> <div></div> <div><span style="font-size: medium">除了认可HPTN 052为2011年的年度突破之外，《科学》杂志及其出版机构——美国科学促进会（AAAS）还确认了在过去这一年中另外9项开创性的科学成就，并将其编纂成十大科学进展名录而登载于12月23日的《科学》杂志上。</span></div> <div></div> <div><span style="font-size: medium">北卡罗来纳州北卡罗来纳大学查珀尔-希尔分校医学院的Myron Cohen及其一个国际性团队中的同事，是在2007年开始这项HPTN 052的研究的，他们从9个不同的国家中招募了1763对异性恋夫妇；这些国家有：巴西、印度、泰国、美国、博茨瓦纳、肯尼亚、马拉维、南非和津巴布韦。每一对参与该研究的夫妇中有一人感染了HIV。</span></div> <div></div> <div><span style="font-size: medium">研究人员立刻给一半的感染了HIV的人提供ARVs，并等待另外一半被感染的参与者出现CD4计数低于250时再给他们提供治疗，CD4计数低于250时表明免疫功能受到严重的损害。（CD4计数低于250时表明罹患了AIDS。）</span></div> <div></div> <div><span style="font-size: medium">接着，在今年早些时候，即于该研究正式计划结束之前4年的时候，一个独立的监督委员会决定所有的研究参与者都应该立刻接受ARVs。该委员会成员已经看到早期给予ARV治疗对HIV传播率所产生的巨大影响；他们建议该试验的发现应该尽早公布。随后，HPTN 052的结果登载于8月11日的《新英格兰医学杂志》上。</span></div> <div></div> <div><span style="font-size: medium">为《科学—年度突破》专题撰写该试验报道的《科学》新闻通讯员Jon Cohen说：“这一（HPTN 052）试验并不意味仅仅治疗病人就能终止一种传染病。但是，当这种方法结合自2005年以来开展的大型临床研究中被证明有价值的3种其它的重要生物医学的预防措施，许多研究人员相信，人们有可能用正确的成套组干预措施来解决某些特定区域中该疾病流行中最艰难的部分。”</span></div> <div></div> <div><span style="font-size: medium">人们已知用ARVs治疗可降低病毒载量，或在某个被感染的人中减少其HIV的实际数量。许多HIV/AIDS的研究人员因此推断，得到治疗的人的感染性也应该较小。但是，在开展HPTN 052之前，持怀疑态度者声称这种理论并未得到证实——且病毒载量可能并不能够反映在生殖器官分泌液中的病毒浓度。</span></div> <div></div> <div><span style="font-size: medium">Jon Cohen解释道：“大多数人所最为期待的是降低一个人体内的病毒含量似乎应该降低其感染性。令人感到意外的是其提供保护的程度及随后的这些结果在HIV/AIDS研究人员、权益维护者及决策者中的影响力。”</span></div> <div></div> <div><span style="font-size: medium">这些发现为某个已经在开展中的一个运动增添了动能，该运动提倡对HIV做持续治疗以降低人群中的病毒载量，而这种方法可能在某些国家中消除HIV/AIDS的流行。但研究人员说，向前推进这一运动并非易事。</span></div> <div></div> <div><span style="font-size: medium">Jon Cohen说：“要将这一临床试验的证据应用于人群存在着巨大的障碍。大约52%的现在就立刻需要ARVs以保持其健康的人无法获得这些药物，而该人群有那是760万人。更何况，还有人们试图增大治疗规模的各种障碍，这些障碍与基础设施的关系要比与药品购买价格的关系更大。”</span></div> <div></div> <div><span style="font-size: medium">即使这样，某些研究人员还是将HPTN 052看作是会“改变游戏规则”的因素，因为它在降低HIV传播率上有着近100%的功效。而且事实上，它已经使许多临床医生和决策者立刻行动起来。鉴于所有这些原因，《科学》杂志以2011年度的最大科学突破来重点推介HPTN 052研究。</span></div> <div></div> <div><span style="font-size: medium"><strong>《科学》杂志2011年的其它9项开创性的科学成就名单如下。</strong></span></div> <div></div> <div><span style="font-size: medium"><strong>隼鸟号太空使命</strong>：在经历了某些近乎灾难性的技术困难及令人震惊的成功恢复之后，日本的隼鸟号飞船带着来自某个大型的、S型的小行星表面的尘埃返回了地球。这种小行星的尘埃代表了人们在35年中对一个行星体所作的第一次直接的采样；而对这些颗粒的分析证实，在地球上所发现的最常见的被称作普通的球粒陨石是产自这些大得多的S-型的小行星。</span></div> <div></div> <div><span style="font-size: medium"><strong>揭开人类起源之谜</strong>：通过研究古代和现代人类的遗传编码，研究人员发现，许多人现在仍然携带着从远古人类——诸如亚洲神秘的丹尼索瓦人以及至今仍未发现的非洲的人类祖先——那里继承的DNA变异株。今年的一项研究揭示了远古人类是如何塑造了我们现代人的免疫系统的，而一项对南非的源泉种南方古猿的化石分析显示，这些古代的人科动物兼具原始的和智人样的特质。</span></div> <div></div> <div><span style="font-size: medium"><strong>捕捉一种光合蛋白</strong>：日本研究人员绘侧了光合体系II，或PSII蛋白结构的生动的细节，植物用该蛋白将水裂解为氢和氧原子。该水晶般清晰的图像显示了该蛋白的催化核心并揭示了内部原子的具体定向。如今，科学家们已经可以进入这一对地球上的生命必不可少的催化结构——该结构可能还是打开强有力的清洁能源之门的钥匙。</span></div> <div></div> <div><span style="font-size: medium"><strong>太空中原始的气体</strong>：用夏威夷的Keck望远镜来探索遥远宇宙的天文学家结果发现了2个氢气云，它们在宇宙大爆炸20亿年之后似乎还保持了其原有的化学。其他的研究人员发现了一颗如宇宙最早的恒星所必定是那样的几乎完全没有金属的恒星，就象宇宙最早的恒星所必定是那样的，但它却是在晚的多的时候形成的。这些发现显示，在狂暴宇宙的无尽岁月中还有未受伤害的孤立物质区域持续存在着。</span></div> <div></div> <div><span style="font-size: medium"><strong>对微生物组的逐步了解</strong>：深入研究人肠道中居住的无数的微生物显示，每个人在其消化道中都有一个领导菌群的主导细菌：拟杆菌、普氏菌属或瘤胃球菌属。追踪研究披露，这些细菌中的某一种会在高蛋白饮食的时候茁壮生长，而另外一种细菌则更喜欢素食者的饮食。这些及其它发现可帮助理请厘清营养和疾病状态时饮食和微生物之间的相互作用。</span></div> <div></div> <div><span style="font-size: medium"><strong>一种有前途的疟疾疫苗</strong>：对某种叫做RTS,S的疟疾疫苗的临床试验的早期结果为疟疾疫苗研究提供了一针兴奋剂。这一正在进行中的，包括了超过15,000名的来自7个非洲国家的孩子的试验令习惯于痛苦失望的疟疾研究者感到有信心，即他们还是有可能发现一种疟疾疫苗的。</span></div> <div></div> <div><span style="font-size: medium"><strong>奇怪的太阳系</strong>：今年，天文学家第一次对几个遥远的行星系统进行了良好的观测并发现那里有些情况相当怪异。首先，NASA的开普勒天文台帮助发现了一个恒星体系，该体系中的行星的轨道运行方式无法用当今的模型来解释。接着，研究人员发现了陷在某个罕见的“逆行”轨道中一颗气态巨星，一颗围绕某个双星系统运行的行星以及10颗看来是在太空中自由浮动的行星——它们与在我们自身太阳系中发现的任何星体都不一样。</span></div> <div></div> <div><span style="font-size: medium"><strong>专门设计的沸石</strong>：沸石是能将石油转变为汽油，净化水质，过滤空气及生产洗涤剂（仅举数例用途）的催化剂和分子筛的多孔矿物质。今年，化学家们确实通过设计了一系列更廉价、更薄及更好配备的新型沸石以处理更大的有机分子而展示了他们的创意。</span></div> <div></div> <div><span style="font-size: medium"><strong>清除衰老细胞</strong>：实验披露，从小鼠体内清除衰老细胞或那些已经停止分裂的细胞可延后诸如白内障和肌无力等与老化有关症状的起病时间。那些体内清除了这些游荡细胞的小鼠不会比它们的未经治疗的笼伴活得更长——但它们确实看上去活的更好，这些结果给了研究人员某些希望，即清除衰老细胞也许还能延长我们的黄金岁月。</span></div><img src ="http://www.cppblog.com/patriking/aggbug/163338.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2012-01-01 11:06 <a href="http://www.cppblog.com/patriking/archive/2012/01/01/163338.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>中国护照可以免签的10个旅游天堂国家(地区)</title><link>http://www.cppblog.com/patriking/archive/2011/12/31/163259.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sat, 31 Dec 2011 06:54:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/31/163259.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/163259.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/31/163259.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/163259.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/163259.html</trackback:ping><description><![CDATA[<p><strong>文章转载至：<a href="http://zhexue.sinaapp.com/?p=134">http://zhexue.sinaapp.com/?p=134</a></strong></p> <p><strong>TOP 1：塞舌尔（Seychelles）——最纯净的奢华海岛</strong></p> <p>来塞舌尔旅游无需签证，只要一本有效护照即可。有效期为30天。</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn039/20100721/0850/b_large_idzt_0b5300052c1d2d0b.jpg"></p> <p>塞舌尔风景秀丽，全境50%以上地区被辟为自然保护区，享有“旅游者天堂”的美誉，1993年在世界拉塞尔自然保护区十大旅游点评选中名列第三。</p> <p>主要景点有马埃岛、普拉兰岛、拉迪格岛和伯德岛等。其中马埃岛上的拉塞尔自然保护区占地65公顷，拥有种类齐全的热带水果树木和成群的象龟，拉塞尔是马埃岛上最大的自然保护区。在这里，克里奥的古朴传统与现代的豪华设施共存。</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn045/20100721/0850/b_large_Oj9M_0b51000392552d0b.jpg"> <br>如 果说塞舌尔是人间天堂，五月谷就是这天堂里的伊甸园。坐落在普拉兰岛中心的五月谷是世界上最小的自然遗产，面积只有19.5公顷。因其中7000多棵海椰 子树而闻名于世。但是除了海椰子，这里还有许多世界上独一无二的动植物，堪称珍奇大观园。五月谷在四十年代的时候还是一个私人庄园，它的名字就是当时的庄 园主所取。1966年它成为国家公园，1983年被联合国教科文组织命名为世界自然遗产。</p> <p>长达4公里的博瓦隆白沙滩是欧洲 旅游者的圣地。细腻如泥的细沙和碧蓝如水晶般透明的海水每年吸引着10多万欧洲有钱人来这里“朝圣”。可爱的儿童笨拙的用沙铲堆砌着他们梦想中的城堡，热 恋中的年轻人或者蜜月中的情侣们尽情享受火辣的阳光，白发苍苍的老人们牵着手伴着夕阳在海滩上散步……游客可以在专业教练的陪同下潜水，欣赏海底千变万化 的珊瑚礁，也可以租一条船去海上钓鱼，钓上鲜活的红石斑或老板鱼可以立即让当地厨师烤出鲜美绝伦的鱼排……</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn039/20100721/0855/b_large_czRP_0b51000392bd2d0b.jpg"></p> <p>提 到塞舌尔，就不得不提海椰子。国宝海椰子海椰子果实是植物王国中最大、最重的种子，通常在10公斤左右，最重可达30多公斤。在其7-9个月大的时候， 趁果肉还是胶质状时方可食用，一旦超过9个月，果肉就会逐渐变硬，成熟的海椰子果肉洁白而坚硬，曾经有人拿来冒充象牙，其硬度可想而知。</p> <p>当地环保意识极强。每砍一棵树都要报环境部审批。在海洋公园海域，为了保护热带鱼类，不但禁止捕鱼，当地人还通常会劝阻游客拾捡贝壳。</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn039/20100721/0855/b_large_ncip_0b4f000249a12d0b.jpg"> <br>当地人热爱音乐，几乎人人能歌善舞。当地音乐风格叫做“Sega”，据称是非洲部落音乐在印度洋岛国的“海洋版”，节奏欢快，让人忍不住会跟着音乐轻轻摇摆。热情好客更是塞舌尔人引以自豪的民族习性。</p> <p>塞舌尔的克里奥餐和东南亚饮食很相似，即有原汁原味的清新，也有很强烈的辛辣味道。这里龙虾和石斑鱼很有名，价格也很便宜。</p> <p><strong>纯净指数：★★★★★★</strong></p> <p><strong>浪漫指数：★★★★★★</strong></p> <p><strong>综合指数：★★★★★★</strong></p> <p><img alt="" src="http://fmn.xnimg.cn/fmn043/20100721/0855/b_large_c1BT_0b5300052dcb2d0b.jpg"> <br><strong>小贴士：</strong></p> <p>塞舌尔除主岛外，还有很多安静的外岛，岛上有酒店，各项设施齐全。该国景点较多，游览需提前做好功课。</p> <p><strong>TOP 2：斐济（Fiji）——彩色的海洋世界</strong></p> <p>中国公民免签，期限为4个月。</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn045/20100721/0900/b_large_EIaT_0b510003937b2d0b.jpg"></p> <p>斐 济位于南太平洋中心、介于赤道与南回归线之间，是纽澳前往北美的必经之地，是由叁百多个周围围绕着环状珊瑚礁、椰林摇曳的碧绿岛屿所构成的诱人度假岛国。 这里到处充满南国海洋的塬始美感，近年由于观光业的发展，海岸地区多已开发为现代化的休闲度假区，饭店、俱乐部与酒吧林立，全年可见来自世界各地的观光 客。</p> <p>普通的大海是蓝色的，但是斐济的大海却是彩色的。因为无数奇形怪状、色彩斑斓的海鱼在水里畅游，将大海搅得五彩缤纷。 斐济拥有300多个大小不一的岛屿，这些岛屿被环状的珊瑚礁包围，所以成了鱼儿的天堂。虽然岛屿众多，但是每个都很精致，最大的岛是美地来雾岛。在离帝国 机场不远的码头，每天都有很多船次去各个小岛。</p> <p><img alt="" src="http://fmn.xnimg.cn/fmn037/20100721/0900/b_large_lTtT_0b5300052f112d0b.jpg"></p> <p>由于人口稀少而风景秀丽，欧美人士早就把斐济当作度假首选之一，甚至不少大牌明星也会选择这里度蜜月。小小的一个岛，还有很多高尔夫练习场。游客在斐济度假时，往往装束随意，扛着整箱的啤酒和帐篷，在洁白的沙滩上尽情欣赏落日余晖，果然是神仙一样的生活。</p> <p>斐 济的花很多，到处都是戴着鲜花的人们，男男女女无一例外。据说，把花戴在左边是表示未婚，而把花戴在两边则表示已结婚。除了男人戴花外，这里更让人吃惊的 是，男人居然也穿裙子。裙子在这里被称做“SOLO”，不仅男人平时会穿着SOLO，甚至指挥交通的警察们也是穿着SOLO执行公务的，真是街头一景。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/1e8c3de83bb9e7f13f99a971197566a6.jpg"></p> <p>斐济</p> <p>每年的8月中旬都举行为期一周的红花节，红花即扶桑花，或称木槿花，是斐济的国花。节日期间岛民举行化妆游行来选举红花皇后。 戴花、穿裙子等等奇怪的另类行为，已经让你充分感受到这个岛国的风情了，而飘扬在四周的人们高亢的歌声则完全带出了岛国悠闲逍遥的情调。</p> <p>岛上至今依然保有许多传统习俗，例如将深海中的鱼群呼唤到浅海，以利捕捉的神奇颂唱仪式、传统的走火仪式等，都是斐济至今仍未消逝的神秘传统。 斐济的两大国粹，一是鲸鱼的平齿，叫“塔布阿”，一是当地的一种土产饮料“杨格纳”。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/27d6ad2ccd97347b1ac186b46b904a73.jpg"></p> <p>斐济</p> <p>斐 济是自由港，故免税店特别多,钻石、珠宝、香水、银器、水晶制品等世界一流商品皆可以免税的价格购得，在有斐济政府观光局标记的免税商店,旅客可安心的购 买。特色产品有手编的篮子、珊瑚、贝壳制品、木雕品、塔巴桌巾、印度沙丽、龟甲等。印度产的金银制品色彩鲜艳作工精致。</p> <p>斐济为太平洋岛国地区交通枢纽，水、陆、空交通较发达。首都苏瓦港系重要国际海港，可泊万吨轮。苏瓦的瑙索里机场可停靠波音737飞机，楠迪机场可起降波音747等大型客机。</p> <p><strong>纯净指数：★★★★★☆</strong></p> <p><strong>浪漫指数：★★★★★☆</strong></p> <p><strong>综合指数：★★★★★☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/f527881b5e365f0a3700ff1e8f215874.jpg"></p> <p>斐济</p> <p><strong>小贴士：</strong></p> <p>斐济人在饮食嗜好注重讲究吃海产品，注重菜肴的丰盛。口味一般口味较重、喜油大，爱甜味。</p> <p><strong>TOP 3：马尔代夫（Maldives）——失落的人间天堂</strong></p> <p>虽然是落地签证，但基本与免签无异，期限为30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/cfff47f5fb89b2b27b89d3e0176e5b22.jpg"></p> <p>马尔代夫</p> <p>在 印度洋宽广的蓝色海域中，有一串如同被白沙环绕的绿色岛屿-马尔代夫群岛。许多游客在领略过马尔代夫的蓝、白、绿三色后，都认为它是地球上最后的乐园。有 人形容马尔代夫是上帝抖落的一串珍珠，也有人形容是一片碎玉，这两种形容都很贴切，白色沙滩的海岛就像一粒粒珍珠，而珍珠旁的海水就像是一片片的美玉。西 方人喜欢称呼马尔代夫为“失落的天堂”。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/c44ef965e2d8c0416483d3567fdddce4.jpg"></p> <p>马尔代夫</p> <p>99%晶莹剔透的海水+1%纯净洁白的沙滩=100%的马尔代夫，千万别惊讶被99%海水所环绕的马尔代夫拥有数千种鱼类，这里是鱼的故乡。</p> <p>整个马尔代夫的旅游景观全在一个度假岛屿与一个饭馆所经营的休闲气氛，因为每个岛屿都是一个独立的酒店经营商开发出来的，所以一岛一饭店就成了马尔代夫特有的旅游文化。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/f6821ad0382f0af3d5d0516e0f816c1f.jpg"></p> <p>马尔代夫</p> <p>首 都马累有建于1913年的总统府。此外，还有建于1656年的古清真寺，以及1675年落成的神奇的回教尖塔，白色的建筑上仍可以清晰地看见古兰经的碑 文。 可供瞻仰的还有古苏丹王朝的苏丹公园，它在1968年马尔代夫成立共和国时曾遭到破坏，虽然今日这里只剩下了一座小小的建筑，却依然比较完整地保留古苏丹 文化的精髓，看似简单的历史馆内记载了多种文化的交融。马累是马尔代夫的购物中心，所有的商店几乎都聚集在此。</p> <p>马尔代夫首都、机场和旅游饭店均位于独立的岛上。岛间交通全靠乘船。首都机动车辆较多，以摩托车为主。旅游岛上机动车辆极少。</p> <p><strong>纯净指数：★★★★★</strong></p> <p><strong>浪漫指数：★★★★★</strong></p> <p><strong>综合指数：★★★★★</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/4c44d00332b7ed9616ed5a2c673f5bc0.jpg"></p> <p>马尔代夫</p> <p><strong>小</strong><strong>贴士：</strong></p> <p>在这里裸泳是禁止的，如被发现会被处以高额罚款。禁止穿泳装在餐厅用餐。马尔代夫旅游岛大多不提供牙刷、拖鞋等，建议赴马中国游客自行携带。</p> <p><strong>TOP 4：帕劳群岛（Palau）——蓝绿色的潜水胜地</strong></p> <p>中国公民落地签即可，期限30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/25ae5f64031a2be0959817ed4f759b63.jpg"></p> <p>帕劳群岛</p> <p>帕劳大大小小340个火山岛和珊瑚岛中只有8个岛有常住居民。群岛分布在南北长640公里的海面上，全国海岸线长达1519公里。到这里来的外国人 多半都是为了领略热带海洋风光，摇曳的棕榈树，温和的海风，银白的沙滩，还有水下奇观。</p> <p>这里是著名的潜水圣地。帕劳有正式的潜水执照者可申请深海潜水许可，这里的潜水环境是世界上许多专业潜水者梦寐以求的所在，占了七个世界第一。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/c827f1ce08ce5cee62ba86e45cb0cfed.jpg"></p> <p>帕劳群岛</p> <p>如 果你向往真正纯净的海水，那么帕劳便是你寻找的世外桃源。帕劳的洛克群岛是太平洋最纯净的海洋生态系统之一，免遭工业污染的最后净土。不论是艳阳高照的白 天，还是温润可人的夜晚，你都可以走在雪白细腻的沙滩上，感受世上最最清澈透明的海水。这里的海水有一种奇异的蓝绿色，那样纯净而又诡异，让人不敢相信， 不敢触碰，只怕一伸手便打破了眼前的美梦。</p> <p>在帕劳，有几个在别处不可能见到的浮潜奇观：玫瑰花瓣一样的暗红色硬珊瑚铺满海底的一座山坡，无数的彩色小鱼在其中自由自在地游来游去。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/2839268b2b133450a5c8a85871e3b6d9.jpg"></p> <p>帕劳群岛</p> <p>还有像小桌子那么大的活车磲贝散落在海底，它的出水管有人的胳膊那么粗，平时，车磲贝的厚肉是挤出硬壳外边的，当你去触动那些肉的时候，它们机灵地 收缩起来，如果你真的被那么大的车磲贝夹住的话，相信它的力量会让你没救的。</p> <p>在 帕劳的群岛中，有很多岛都有四面环山的内陆湖，湖水没有海 水清澈，呈现暗绿色。帕劳的水母湖里有着全世界独一无二的无毒水母。据说水母湖的参观是统一管理的，有时候，开这个岛的水母湖，一段时间以后，再开另一个 岛的水母湖，这个就关闭起来让那些受伤的水母休养生息，这样，水母湖既为帕劳创造了可观的旅游经济，同时，水母也得到了管理和保护。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/2675677f6eda363767d9aebae98faceb.jpg"></p> <p>帕劳群岛</p> <p>还有一个值得潜水人关注的奇观就是可以看见海底活化石——鹦鹉螺。鹦鹉螺生长在人类无法潜到的深海里，由于鹦鹉螺的身体构造是一格一格的，因此它是 天生的潜水专家，它不必担心我们人类惧怕的气压。</p> <p>在帕劳，你会重新学到什么是海，什么是地，什么是光，什么是热。上帝创造帕劳似乎就是为了显示自己能够创造出一个多么美妙的世界。</p> <p>帕劳属于热带海洋性气候，四季都是夏天，天天都有艳阳高照的好天气，即使是在7月到10月的雨季，也顶多只有午后的雷阵雨。</p> <p><strong>纯净指数：★★★★★</strong></p> <p><strong>浪漫指数：★★★☆</strong></p> <p><strong>综合指数：★★★★</strong><strong>☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/dbaea8f3196ef46d02d74a0e6d2890ae.jpg"></p> <p>帕劳群岛</p> <p><strong>小贴士：</strong></p> <p>帕劳对旅客随身带的药物检查得非常 仔细,如果一定要带药，请携带包装印刷上有明确英文说明的药物,否则会在海关被没收。</p> <p>通用语言是英语，通用货币是美元。</p> <p><strong>TOP 5：瓦努阿图（Vanuatu）——梦中的天堂</strong></p> <p>对中国公民免签证，原则上是30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/5fd3d11ffce09864443c38507fe948f2.jpg"></p> <p>瓦努阿图</p> <p>瓦努阿图位于太平洋西南部。属美拉尼西亚群岛，由约80个岛屿（其中68个有人居住）组成。最大的的岛屿是桑托岛，面积3947平方公里。</p> <p>大 自然对瓦努阿图的恩赐是丰厚的，不仅给了她丰饶的土地，而且给了她多样的旅游资源。瓦努阿图的80多个岛屿几乎个个都有自己的特色。特别是塔纳岛上的伊苏 尔火山，被称为是世界上“最可亲近的火山”，游人可以站在火山口的边沿上观看火山在脚下喷烟吐火，因为这里喷出的岩浆多是直起直落，很少斜喷到口外。人们 常把一睹这“上帝燃放的礼花”作为一生之幸。</p> <p>南太平洋白沙如银，碧波万顷，热带潜水观鱼、观火山口、高尔夫，游艇，帆板，沙滩运动等多项休闲娱乐，使您完全放松身心静享安宁……而热带各色美食，海 鲜，法式大餐、中餐，尤其是椰子蟹颇值得一试。将会带给您味觉极至的享受。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/3ee97f6c20116cad85055e602b7794f5.jpg"></p> <p>瓦努阿图</p> <p>您 一定要去世界上惟一的一所水下邮局，在一个天然的海洋公园里，处在海平面3米以下坐落着瓦努阿图邮政宫方水下邮局。它的外观看起来像一个海底巨大的苏打罐 头，距维拉港沙滩有35米，每年有50000多游客到这里来潜水，您可以到这里来邮寄防水明信片，营业员会给您的明信片盖戳。不是使用传统的以墨汁盖销邮 票的方式，而是使用凹凸花纹的日戳，印出特殊的凹凸纹迹，表示明信片己经寄出。在您邮寄明信片的同时还可观赏欣赏世界上最迷人的海底动植物。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/809d92d43ce1e160107f8ee158a7d430.jpg"></p> <p>瓦努阿图</p> <p>桑 托岛首府布干维尔港则是世界闻名的潜水胜地。1942年一艘由豪华游轮改装的运兵船，载着5500名美军，在此进港时触上了美军自己的封港水雷， 不久便在近岸的珊瑚礁上沉没。此游轮距海岸仅百米之遥，而船首和船尾离水面分别只有20米至70米深，正好成为潜水爱好者和猎奇探险者们的乐园。附近还有 一处百万美金海湾，也是潜水的好去处。</p> <p>二战结束时，美军不想带走重型装备，将装备全部倾倒进海里。当您戴上潜水镜浮在海 面上向下望时，那些压路机、推土机、铁轨、吊车和大炮等虽已被海藻 覆盖，珊瑚遮掩，但其轮廓仍依稀可辨。此处还有一条长达十来米，重十余吨的大鱼，不知为何，一年中竟有9个月在此同潜水者嬉戏。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/05462cb0c84466fa7c11ba214fd9be43.jpg"></p> <p>瓦努阿图</p> <p>而令人刺激的蹦极，也源自瓦努阿图。在彭迪科斯特岛，每年都有蹦极的节日：村民们依着大榕树以藤条绑木杆搭起一个三四十米高的塔架，勇士们立于塔顶，以藤条系足，从高处跳下，头发触地，而皮肉无损，传为绝技。</p> <p><strong>纯净指数：★★★★</strong></p> <p><strong>浪漫指数：★★★</strong><strong>★</strong></p> <p><strong>综合指数：★★★★</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/ffdfa234ce774a19308011cf6947533e.jpg"></p> <p>瓦努阿图</p> <p><strong>小贴士：</strong></p> <p>交通设施落后，费用昂贵。以海运为主。各主要岛屿都有机场。维拉港有国际机场，可直飞澳大利亚、新西兰、斐济等。</p> <p><strong>TOP 6：毛里求斯（Mauritius）——印度洋上的珍珠</strong></p> <p>因旅游目的到访的中国护照持有者可以落地签证，期限为15天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/e6b7cf7c400ed13e7e7c157ab9f003e8.jpg"></p> <p>毛里求斯</p> <p>毛里求斯景色优美，风光绮丽、美丽的海滩和明媚的阳光吸引着大批来自世界各地的旅游者。北部的潘普利莫塞斯花园内花木葱葱，百鸟啾啾，使人有如入仙 境之感。100年才开一次的高大王棕随风摇曳，清池内飘荡着巨大的睡莲。毛里求斯茶隼和粉鸽是世界上的珍稀动物。</p> <p>毛里求斯岛是火山岛，四周被珊瑚礁环绕，岛上的地貌千姿百态。沿海是狭窄平原，中部是高原山地，有多座山脉和孤立的山峰，景色颇为壮观。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/31b7f9136896b648d0f3144c88ea6a50.jpg"></p> <p>毛里求斯</p> <p>首 都路易港三面环山，风景秀丽，是一个天然良港，地处南大西洋和印度洋之间的航道要冲。在苏伊士运河通航以前，这里是环绕好望角航行的必经之地。市 政厅、自然博物馆、美术馆、图书馆、教堂等市内主要建筑是古代和现代、东方与西方风格的奇妙结合。毛里求斯大学培养了大批品学兼优的学子。</p> <p>由 于族裔混杂、文化多元，毛里求斯的饮食亦多受克里奥耳菜、中菜、欧洲菜和印度菜等影响，所以一顿饭里常有混集不同地方菜肴的情况。其中尤以印度菜 对毛里求斯饮食文化影响最深，印度菜中的咖喱、香料和一种叫“Briyani”的菜饭被搬到毛里求斯人的日常饮食里。毛里求斯一度受法国统治，所以法国菜 也是普及菜式，但是受到印度菜和非洲菜影响，这种“变种”的法国菜多用辣椒和香料作调味。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/b60eb5fac3b9565687ae8ace3f3b90fc.jpg"></p> <p>毛里求斯</p> <p>毛里求斯大部份农业用地都以种植甘蔗为主，除了用作制造蔗糖外，也用来酿制朗姆酒。</p> <p>塞 卡（Sega）是毛里求斯一种本土独有民间音乐和舞蹈的统称。塞卡音乐来自非洲，现在的塞卡歌舞也转变成吸引游客的表演之一。表演多由男性表演者 负责乐器演奏，女性表演者负责舞蹈表演。多年来所使用的乐器都大同小异，包括用山羊皮做鼓膜的拉瓦纳手鼓（ravane）、马拉瓦纳木沙盒 （maravann）、三角铁等。女舞蹈员穿上颜色鲜艳的长裙，跟随轻快的节奏起舞。岛上不少酒店都提供塞卡歌舞表演。</p> <p><strong>纯净指数：★★★★</strong></p> <p><strong>浪漫指数：★★★☆</strong></p> <p><strong>综合指数：★★★☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/56133ec4db17071824a8c2af7b11128a.jpg"></p> <p>毛里求斯</p> <p><strong>小贴士：</strong></p> <p>毛里求斯属亚热带海洋性气候。全年分夏、冬两季，11月至次年4月为夏季，沿海气温27℃，中部高原22℃，海水温度约27℃；5月至10月为冬 季、凉季，沿海平均气温24℃，中部高原19℃，海水温度约22℃。</p> <p><strong>TOP 7：图瓦卢（Tuvalu）——属于上帝的花园</strong></p> <p>入境时可得到落地签证，为期30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/646f49c018a060bf42ebd10973c008b5.jpg"></p> <p>图瓦卢</p> <p>在美丽的南太平洋上，“镶嵌”着许多风景绮丽的岛国，人们将它们形象地喻为“一串璀璨的明珠”。在这串“明珠”之中，位于斐济以北的图瓦卢便是其中 亮丽的一颗。</p> <p>图 瓦卢在当地语言中意为“八岛之群”。但实际上，图瓦卢建国时由9个环形珊瑚岛群组成。图瓦卢位于太平洋南部，总面积只有26平方公里，总人口不足 1.5万人，属于热带海洋性气候，一年四季风景如画，人们将构成这个国家的9个环状珊瑚小岛称为太平洋上的“九颗闪亮明珠”并不过分。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/d6ede42e86f2cca137dae4d417db384d.jpg"></p> <p>图瓦卢</p> <p>这里第一眼看上去，一派典型的热带岛国景象：穿着蓝色衬衫和短裤的警察光着脚走在街上，孩子们在珊瑚礁围成的湖中嬉戏，渔夫们用网捞上新鲜的金枪 鱼。下午时光常常在吸烟、品尝酸椰汁和小憩中度过。在很多人眼里，图瓦卢真的像一个“世外桃源”。</p> <p>国民风纯朴，治安良好，重视分享。来自同岛的乡亲可借住聚会所，食物也多由同岛的乡友共同分享，这样的家族传统，导致年国民所得仅约1663美金 （2004）的土国没有路边乞讨的现象。</p> <p>该国传统用餐方式乃保留原始的手抓法，不使用刀餐汤匙等餐具，客人席地而坐，地上铺满林投叶编制而成的手工席子。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/bfb14979f4b0e39052a585dc95f31f8f.jpg"></p> <p>图瓦卢</p> <p>在 服装上，岛民不论男女都著南国文化特色之一的沙龙裙（Sulu Fiji / Lavalava），女生的SULU颜色鲜豔，打结在旁侧；男生的则颜色暗沉，没有花色，看似西装裤，结于中侧。而出席正式场合，男性上半身多半会搭穿鲜 豔颜色的岛屿服装（Island wears）；女性则穿著连身洋装。一般居民平日多半不穿鞋，即使到办公大楼上班或是部长洽公，亦以拖鞋替代皮鞋。小朋友打赤脚亦为街角长久之景状。</p> <p>当地习俗传统对于即将离开土国的人多半于脖子上套上贝壳或是当地种子制成的项鍊，以表达不舍之情。脖子上项鍊越多，表示人缘越好。</p> <p><strong>纯净指数：★★★</strong></p> <p><strong>浪漫指数：★★★</strong><strong>★</strong></p> <p><strong>综合指数：★★★☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/0a642fa239a1e26a310ba8c6dcc0cc35.jpg"></p> <p>图瓦卢</p> <p><strong>小贴士：</strong></p> <p>据监测，图瓦卢周围海平面平均每年上升5.6毫米，是联合国气候变暖国际小组估计的全球海平面上涨幅度的两倍。由于当地绝大多数居民生活在海平面一 到两米之上，这意味着图瓦卢的大部分岛屿将在50年后被淹没。</p> <p><strong>TOP 8：密克罗尼西亚联邦（The Federated States of Micronesia）——海上的原始森林</strong></p> <p>对中国公民免签，期限为30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/8100ab07bb69fb64ba09ba4bfa0156ab.jpg"></p> <p>密克罗尼西亚联邦</p> <p>密克罗尼西亚（Micronesia）是太平洋三大岛群之一，意为“小岛群岛”。而位处南太平洋的密克罗尼西亚联邦（中文简称“密联邦”），以其浪漫的海岛风光，绝美的自然景观，独特的民族风俗，成为世界旅游热点国家。</p> <p>密克罗尼西亚联邦由607个大小岛屿组成，是世界上降雨量最多的国家，由于四周被水环绕，海洋成为了生活的一切。各岛周围由环礁列布，形成天然内湖，林木丰茂，空气格外清新。乘坐船舶，游人可以上到岛上观光游览。</p> <p>岛上到处是热带物产，咖啡、胡椒、香料植物、椰子、香蕉、芒果等随处可见。值得一提的是，这里名贵的深海鱼种——金枪鱼，据说，密克罗尼西亚拥有世 界70%的金枪鱼产量，列全球之冠。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/0b81918ea023584b9b589077dc70f3fb.jpg"></p> <p>密克罗尼西亚联邦</p> <p>这里的生态环境保护做得特别好，坐车行进在环岛公路上犹如在国家森林公园中穿行，祥和、静谧。一派碧海银沙，树木葱郁的美景。高耸的椰林，巨大的面包树，低矮的薯蓣园、芋头田，充满了自然、原始岛屿的气息。</p> <p>穿 着华丽、因富藏磷矿而致富的诺鲁人；嚼着槟榔、唇齿通红的雅浦人、帛琉人；粗壮高大的楚克人，以及关岛的原住民莫洛人，来往于各个岛屿之间，这些 岛上充满了异域风情：密克罗尼西亚有一些岛上的居民至今仍保留的一种有趣的女婿与岳母之间的回避礼；这里的妇女，好食肥肉，以肥为美，更令人惊奇的是逢年 过节，婚、喜、丧事，以送活猪为最高礼品，所以在这里随处都能见到活猪在自由活动。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/a5566ee9c936a4c651f91d5e9c518a59.jpg"></p> <p>密克罗尼西亚联邦</p> <p>来 到密克罗尼西来一定要参加特色草裙舞：传统的草裙舞，舞姿极美，青年男女们光着上身，围上草编的裙子，跟着音乐的节奏，载歌载舞，激情、动感。而 岛上最吸引人的地方，还有是一座称之为兰马多(Nan Madol)的废城遗址。位于波纳佩岛的东南岸，是一座神秘的城市，用20英尺长的石条建成，如今人们仍可见到石条的遗骸，约100多座建筑的遗迹如今仍 洒落在堤礁边上。</p> <p>Lonely Planet系列丛书里有专门的一本介绍密克罗尼西亚，这其中就包括了密克罗尼西亚联邦，这个并不为人所知的原始海岛的一切。</p> <p><strong>纯净指数：★★★</strong></p> <p><strong>浪漫指数：★★★</strong></p> <p><strong>综合指数：★★★</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/ab73daf9c3113b7ef8dc98161bb0ca7f.jpg"></p> <p>密克罗尼西亚联邦</p> <p><strong>小贴士：</strong></p> <p>由于人口少，交通也颇为落后。四大岛设有国际机场，但只有约每日一个航班。来往外岛得靠中、小型船舶，可能好几天才有一班。</p> <p><strong>TOP 9：斯里兰卡（Srilanka）——太平洋上的宝石之国</strong></p> <p>斯里兰卡对中国游客免签证。前去旅游，可以停留30天。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/88850043463bab56333836dcf955adf2.jpg"></p> <p>斯里兰卡</p> <p>斯 里兰卡，旧称锡兰，是个热带岛国，形如印度半岛的一滴眼泪，镶嵌在广阔的印度洋海面上。“斯里兰卡”在僧伽罗语中意为“乐土”或“光明富庶的土地”，有 “宝石王国”、“印度洋上的明珠”的美称，被马可波罗认为是最美丽的岛屿，因为它有美丽绝伦的海滨，神秘莫测的古城，丰富的自然遗产，以及独特迷人的文 化。</p> <p>斯国也被称为“红茶之国”。斯里兰卡以红茶闻名于世，始于1867年的红茶种植使她成为诸多顶级红茶的产地。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/414a974185e6d84a56a6211d29671b0b.jpg"></p> <p>斯里兰卡</p> <p>斯 里兰卡品纳维拉大象孤儿院斯里兰卡风景优美，包括宗教圣山，美丽的海滩，荷兰殖民者留下的城堡，供奉着佛牙的宝塔，经历了几千年的古城，建立在巨大岩石上 的宫殿，甚至有大象和豹等野生动物！除去这些，即便只是走在那里的街头，完全陌生的风情都能让人喜悦。而且斯里兰卡物价低廉，对中国游客很友好，非常适合 度假。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/264618bcaea6ba2d91fedbeaadede8c8.jpg"></p> <p>斯里兰卡</p> <p>斯里兰卡人以大米为主食，喜食鸡肉，菜多放咖哩、辣椒、椰子油，味道辛辣、浓烈。煮稻是他们饮食中最具特色的一种，一般制作方法是把稻子放进大瓦罐中加水煮熟。这样煮稻，米泽微黄，便于贮藏，长时间香味不变，可随时食用。</p> <p>在 斯里兰卡，最流行的购买是茶叶，手工艺品有木雕、编织品、陶瓷器和金属制品，Ambalangoda是购买斯里兰卡面具的最好去处。斯里兰卡尤其以珠宝石 而闻名，Ratnapura是斯里兰卡宝石贸易的中心。在斯里兰卡的各购物中心、百货商店、机场免税店、旅游商店和集市等处都可以买到斯里兰卡各式各样的 物产。</p> <p><strong>纯净指数：★★☆</strong></p> <p><strong>浪漫指数：★★☆</strong></p> <p><strong>综合指数：★★☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/536bfb84badf1cbdea6bfb445c034598.jpg"></p> <p>斯里兰卡</p> <p><strong>小贴士：</strong></p> <p>值得注意的是在斯里兰卡，点头和摇头的含义与中国相反，点头是表示不是，摇头则表示是。斯里兰卡人吃饭是用右手的拇指、食指、中指这三根指头拿起食物食用，给当地人送礼物时，不要送花，吃饭和接受礼物时，都要用右手。</p> <p><strong>TOP 10：韩国济州岛（Jeju Island</strong><strong>）——东方夏威夷</strong></p> <p>以旅游为目的的游客去韩国济州岛即可免签证，如果要去韩国的其他地方当然还是需要签证的。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/da4d1e8040f7636848640588beecbd97.jpg"></p> <p>韩国济州岛</p> <p>济 州岛地处北纬33度线附近，却具有南国气候的特征，是韩国平均气温最高、降水最多的地方。温和湿润的气候和由火山活动塑造出的绮丽多彩的自然风景，使它 赢得了“韩国的夏威夷”的美誉，吸引着成千上万的海内外游客前往观光。位于济州岛西南部的中文，与湛蓝的波涛为邻，和白色的沙滩为伴，背傍景色优美的天地 渊瀑布，是一处不可多得的旅游和休养胜地。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/4cdc6b11cfcaef023087bad013014c66.jpg"></p> <p>韩国济州岛</p> <p>很多访韩外国国家元首和政府首脑曾经在中文的别墅和宾馆下榻，进行他们繁忙访问途中的小憩。济州岛还享有“蜜月之岛”、“浪漫之岛”的美称，韩国许多新婚夫妇都在这里度过他们浪漫的蜜月。</p> <p>自 古以来，人济州岛称这个岛有“三多三宝”。三多是风多、石多、果树多，三宝是指海产、植物和方言。济州岛的东部是大片适合于放牧的草地，使得该岛许多世纪 以来一直是韩国的主要牧场。岛上一个占地8万公顷的牧场是亚洲最好的牧场之一。济州岛历史上曾以饲养马匹闻名，如今岛上仍有3000多匹骏马，约占韩国马 匹总数的三分之二。</p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/79d3e895a451177c6962f3d116f8d5a1.jpg"></p> <p>韩国济州岛</p> <p>岛上气候温和，适宜种植柑桔、葡萄柚和红桔，岛上的西归浦正是全国柑桔生产的中心。</p> <p>为了保护果树不受岛上强劲海风的侵袭，果园的四周建起了高高的石墙。</p> <p>济州岛远离半岛，岛上的一些原始习俗仍在流传。最有意思的是那里还可以看到母系社会的痕迹，当家、谋生主要靠妇女。其中“海女”算是最典型的“职业妇女”了。她们常要潜入水下沿峻峭的礁石采集贝类、鲍鱼、海参和海螺等海产品，而男人们却留在家里照料家务。</p> <p><strong>纯净指数：★★</strong></p> <p><strong>浪漫指数：★★☆</strong></p> <p><strong>综合指数：★★☆</strong></p> <p><img alt="点击进入下一页" src="http://res.fashion.ifeng.com/attachments/2010/07/19/538e5625c3248c74c83a19093d80eecb.jpg"></p> <p>韩国济州岛</p> <p><strong>小贴士：</strong></p> <p>海螺、生鱼片、鲍鱼粥、海产火锅、烤方关鱼等都是当地有特色的美食，令人向往的济州岛济州的风味名吃还有糕饼、烤嘉吉鱼、五梅汽酒、山鸡荞麦面、盛蟹汤、荞麦刀削面等。</p> <p>济州全境南北有公路贯通，外国人持有国际驾驶执照者可租借汽车。</p><img src ="http://www.cppblog.com/patriking/aggbug/163259.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-31 14:54 <a href="http://www.cppblog.com/patriking/archive/2011/12/31/163259.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最短路径系列【最短路径、哈密顿路等】</title><link>http://www.cppblog.com/patriking/archive/2011/12/27/162933.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Tue, 27 Dec 2011 10:24:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/27/162933.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162933.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/27/162933.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162933.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162933.html</trackback:ping><description><![CDATA[<p>本文转载本人独立博客：<a href="http://zhexue.sinaapp.com/?p=13">http://zhexue.sinaapp.com/?p=13</a></p> <p>最短路径问题，一个经典算法问题。本文粗略总结了一种常见的最短路径算法，以及几个最短路径变种问题的解法，其中包括哈密顿路。对于有向图或者无向图，假设有V个节点，E条边，G[Vi,Vj]表示图中点Vi到Vj边的权值。dist[i]表示：点s到点i的最短路径。</p> <h3>一、单源最短路径</h3> <p>给定图G，求点对s-&gt;t之间的最短路径，该问题使用经典的dijkstra算法即可解决，时间复杂度O(V^2)。基本思想：两个集合S,T，S表示已经访问的点集合，T表示未访问的点集合，S初始为空，T包括所有点；每次从T集合中选取从s到该点距离最小的点cur，然后将点cur加入到S中（保证从s到S集合中的点之间的路径长度最小），并且基于cur点为跳板，做松弛操作，更新s到T集合中其他点的距离，松弛操作即，如果dist[j] &gt; dist[cur] + G[cur,j]，更新dist[j] = dist[cur]+G[cur,j]，其中j属于T集合；当cur==t时算法结束。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/dijstra.zip">dijkstra代码下载</a></p> <h3>二、有负权边的图的单源最短路径</h3> <p>对于（一）中的dijkstra算法，是否可以用于求解带负权边的单源最短路径问题呢？用三元组(x,y,w)表示一条边权为w的从点x到点y的有向边。先举例看看，假设图中包含3个节点，包含3条边：（1，2，-3）、（2，3，1）、（3，1，1），从图可以看出为一个环1-&gt;2-&gt;3-&gt;1，且环的边权总权值为-3+1+1=-1，那么通过一直循环，那么图中任意两点之间的最短路径都为-oo大，因此不能通过dijkstra来求解最短路径，因为出现负环之后破坏了“从s到集合S中点之间路径长度最小”这点，通过负环的循环，s到S中点之间的路径长度还可以变小。</p> <p>对付有负权边的单源最短路径问题，可以采用bellman-ford算法、SPFA算法。</p> <p>Bellman-ford算法思想：dist[s] = 0,其他点i ,dist[i]=oo。进行V-1次循环，每一次循环：对图每一条边E(i,j)两边的点做松弛操作，如果dist[j] &gt; dist[i] + G[i,j]，更新dist[j] = dist[i]+G[i,j]。完成V-1次循环后，进行判断：如果存在一条边E(i,j)，如果dist[i]+G[i,j] &lt; dist[j]，那么图中存在负权环。如果不存在负权环，则dist[t]为从s到t的最短路径。算法复杂度O(VE)。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/bellman-ford.zip">Bellman-ford算法代码下载</a></p> <p>SPFA算法思想：维护一个队列Q，队列初始只有s点，一个标记数组flag，flag[i]=1表示节点i在队列中，否则表示不在队列中，一个cnt数组，cnt[i]标记点i进入队列的次数。求队首元素cur，对于边E(cur,j)，进行松弛操作：如果dist[j] &gt; dist[cur] + G[cur,j]，更新dist[j] = dist[cur]+G[cur,j]，如果j不在队列中，则将j加入队尾，同时判断j进入队列次数是否大于V-1，如果大于V-1，说明存在负权环，算法结束，否则一直进行，直到队列为空为止。算法复杂度O(2E)。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/spfa.zip">SPFA算法代码以及论文下载</a></p> <h3>三、大规模的图，顶点多的稀疏图</h3> <p>Dijkstra算法复杂度为O(V^2)，如果图的规模太大，那么无疑难以胜任。其实，对与规模大的图，可以使用min-heap优化，复杂度O((V+E)logV)。思想：维护一个最小堆，用于优化Dijkstrak中从T选取从s到T中路径最短的点，该点即堆顶元素。这个方法即A*搜索。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/dijstra+heap.zip">Dijkstra+heap代码下载</a></p> <h3>四、全源最短路径问题</h3> <p>全源最短路径即求出图中任意点对之间的最短路径。方法（1）：枚举任意点对，采用dijkstra算法求解即可，复杂度O(V^4)。方法（2）：以每一个点为松弛操作的中间点，枚举其他两点，进行松弛操作，即可得到全源最短路径，这便是鼎鼎大名的floyd算法，其状态转移方程如下： G[i,j]=min{G[i,k]+G[k,j],G[i,j]}，时间复杂度O(V^3)。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/floyd.zip">floyd算法代码下载</a></p> <p>&nbsp;</p> <h3>五、最短哈密顿路径</h3> <p>从s出发到达t，且经过图中每个点至少一次的最短路径长度。这个问题是一个NPC问题，没有高效的解法。假设有N个点，那么N位bit来标记那些点已经访问过，哪些没有访问过。设f[I][J]表示，从s出发达到J，且经过了I中对应位标记为1的所有点的最短路径。有方程如下：</p> <p>f[I1][J1] = min{F[I][J] + G[J][j],&nbsp; 枚举I,J,j,其中(I&amp;(1&lt;&lt;j)) == 0 &amp;&amp;&nbsp; (I|(1&lt;&lt;j) )== I1 &amp;&amp;&nbsp; (I&amp;(1&lt;&lt;J)) != 0}</p> <p>初始只f[(1&lt;&lt;s)][s] = 0， 从改点出发，利用上述方程推出所有的中间变量，包括结果f[(1&lt;&lt;V)-1][t]。下面代码用于求解小规模图的哈密顿路。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/hamiltonian.zip">代码下载</a></p> <h3>六、第K短路径问题</h3> <p>求s到t的第k短路径，如果k=1，直接采用dijkstra算法即可求解。如果k=2的话，首先采用dijkstra算法求解最短路径，然后枚举删除最短路径上边，再次进行dijkstra算法，求解最短路径即为第k短路径。</p> <p><strong>理论一：A*</strong><strong>算法求解到的路径是最短的。</strong></p> <p>根据理论一就可以用A*路径求得最短路径，比dijkstra盲目式算法效率高。</p> <p>假设用A*算法求得最短路径时，即第一次搜索到目标节点后不停止。继续启发式搜索下去，那么根据理论一可以得到第二次搜索到目标节点的路径是第二短路径。依次类推得到第k短路径。</p> <p><strong>那么A*</strong><strong>算法的h’</strong><strong>（x</strong><strong>）怎么设计呢？</strong></p> <p>已知h’（x）与h（x）越接近，时间效率越好，h（x）为x到目标节点的实际最短路长。既然这样那么直接取最好值，先用dijkstra算法算出各点到目标节点的最短路径作为估价值h’（x），使效率到达极大。</p> <p><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/07/Kth-shortest-path.zip">第K短路径代码下载</a></p><img src ="http://www.cppblog.com/patriking/aggbug/162933.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-27 18:24 <a href="http://www.cppblog.com/patriking/archive/2011/12/27/162933.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我遇到的互联网公司的面试题</title><link>http://www.cppblog.com/patriking/archive/2011/12/27/162903.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Tue, 27 Dec 2011 04:51:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/27/162903.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162903.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/27/162903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162903.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162903.html</trackback:ping><description><![CDATA[<p><span style="font-size: medium">转载至本人独立博客: <a href="http://zhexue.sinaapp.com/?p=64">http://zhexue.sinaapp.com/?p=64</a></span></p> <p><span style="font-size: medium">AL公司，全是算法题：</span></p> <p><span style="font-size: medium">（1）给两颗树A，B，写程序判断B是否是A的子树。</span></p> <p><span style="font-size: medium">（2）两个鸡蛋，100层楼，鸡蛋在某一层K抛下会碎，那么在第K层的上面的层抛同样也会碎。求最少的抛鸡蛋的次数，确保能找出K。</span></p> <p><span style="font-size: medium">（3）一个10G的文件，每行一个字符串；给你一台2G内存的机器，求出现频率最高的100个字符串。</span></p> <p><span style="font-size: medium">（4）100W个数，求最大的100个？如果是100亿呢？</span></p> <p><span style="font-size: medium">（5）一副扑克牌，54张，三个人玩牌，假如要你设计系统，如何洗牌，分牌？假设，每人18张牌。</span></p> <p><span style="font-size: medium">（6）一个单链表，给一指针p只向单链表的某一个元素，如何在p之前插入一个数据。</span></p> <p><span style="font-size: medium">（7）给一字符串，如果能将其转化为一个数字，将其转化成一个数字，否则报错。（开放性题）</span></p> <p>&nbsp;</p> <p><span style="font-size: medium">CX公司: 面试的时候问的就是笔试的题目，</span></p> <p><span style="font-size: medium">（1）笔试题：如何求斐波那契数列的第n个数？</span></p> <p><span style="font-size: medium">（2）问 约瑟夫问题，最后一个出队的人编号，假设编号是1~N，报数到M的人出队。</span></p> <p>&nbsp;</p> <p><span style="font-size: medium">RR公司，面试题：</span></p> <p><span style="font-size: medium">（1）求A+B，不用+-/*，不能用循环。</span></p> <p><span style="font-size: medium">（2）实现一个栈，支持O(1)的pop,push,min,max操作。</span></p> <p><span style="font-size: medium">（3）如何判断一台机器是16位机，还是32位机，可以通过写代码实现。</span></p> <p>&nbsp;</p> <p>敬请期待，我会抽时间给每一个题一个解法。</p><img src ="http://www.cppblog.com/patriking/aggbug/162903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-27 12:51 <a href="http://www.cppblog.com/patriking/archive/2011/12/27/162903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二叉树中序遍历【一道MS面试题】</title><link>http://www.cppblog.com/patriking/archive/2011/12/27/162902.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Tue, 27 Dec 2011 04:45:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/27/162902.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162902.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/27/162902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162902.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162902.html</trackback:ping><description><![CDATA[<p><span style="font-size: medium">本文转载至： <a href="http://zhexue.sinaapp.com/?p=79">http://zhexue.sinaapp.com/?p=79</a></span></p> <p><span style="font-size: medium">已知二叉树中每个节点的左右孩子节点和父节点，用非递归的方式，不能使用任何额外的空间和函数（自己写的可以），中序遍历二叉树。假设二叉树根节点root的父节点为NULL。</span></p> <p><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 题目要求不使用任何额外的内存空间，这确实够BT，还好给了每个节点的父指针，可以好好利用这个信息。思路如下：</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （1）如果第一次到达某个节点时，如果有左孩子节点，立即访问左孩子节点。</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （2）如果节点没有左孩子节点，则访问右孩子节点。</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （3）从子节点返回时，如果当前节点的父节点的右孩子节点等于当前节点（条件1，这说明该父节点及其子节点都已经访问过了），则从当前节点返回到当前节点的父节点，直到条件1不成立为止。</span></p> <p><span style="font-size: small"><br></span></p> <p><span style="font-size: medium"><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/06/zhongxubianli.zip">代码下载</a>（包括递归，基于stack的非递归，不用额外空间的非递归）</span></p><img src ="http://www.cppblog.com/patriking/aggbug/162902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-27 12:45 <a href="http://www.cppblog.com/patriking/archive/2011/12/27/162902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二叉树中序遍历【一道MS面试题】</title><link>http://www.cppblog.com/patriking/archive/2011/12/27/162901.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Tue, 27 Dec 2011 04:43:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/27/162901.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162901.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/27/162901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162901.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162901.html</trackback:ping><description><![CDATA[<p><span style="font-size: medium">本文转载至： <a href="http://zhexue.sinaapp.com/?p=79">http://zhexue.sinaapp.com/?p=79</a></span></p> <p><span style="font-size: medium">已知二叉树中每个节点的左右孩子节点和父节点，用非递归的方式，不能使用任何额外的空间和函数（自己写的可以），中序遍历二叉树。假设二叉树根节点root的父节点为NULL。</span></p> <p><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 题目要求不使用任何额外的内存空间，这确实够BT，还好给了每个节点的父指针，可以好好利用这个信息。思路如下：</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （1）如果第一次到达某个节点时，如果有左孩子节点，立即访问左孩子节点。</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （2）如果节点没有左孩子节点，则访问右孩子节点。</span> <br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （3）从子节点返回时，如果当前节点的父节点的右孩子节点等于当前节点（条件1，这说明该父节点及其子节点都已经访问过了），则从当前节点返回到当前节点的父节点，直到条件1不成立为止。</span></p> <p><span style="font-size: small"><br></span></p> <p><span style="font-size: medium"><a href="http://openuc-wordpress.stor.sinaapp.com/uploads/2011/06/zhongxubianli.zip">代码下载</a>（包括递归，基于stack的非递归，不用额外空间的非递归）</span></p><img src ="http://www.cppblog.com/patriking/aggbug/162901.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-27 12:43 <a href="http://www.cppblog.com/patriking/archive/2011/12/27/162901.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>江湖秘籍：如何用百度打击对手【360借百度之刀站金山】</title><link>http://www.cppblog.com/patriking/archive/2011/12/26/162871.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Mon, 26 Dec 2011 13:29:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/26/162871.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162871.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/26/162871.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162871.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162871.html</trackback:ping><description><![CDATA[<p>文章来自:&nbsp; <a href="http://zhexue.sinaapp.com/?p=118">http://zhexue.sinaapp.com/?p=118</a></p> <p>如果你有一个直接对手金山，还有个多年宿敌百度，而金山和百度之间并无恩怨，如何能够借百度之手攻击金山呢？想到了《教父II》里Michael的一句话：“这很难，但没有事情是不可能的。” <br>360做到了。是的，可以把它叫做微创新。 <br>Step 1： <br>注意到这件事是从“金山泄密门”上了百度实时热点第一名开始的。毫无疑问，这个事情很奇怪。一个IT界的新闻，居然比“江苏洋垃圾”、“市委门前自焚”、“一夜情换名牌”、“美赞臣细菌感染”、“女教师惨遭虐杀”这些社会民生类新闻有更高的搜索？不符合常识。在仔细看，金山泄密门的搜索指数是20万，对比一下，金陵十三钗是25万，龙门飞甲是17万，好吧，区区金山一个员工的失误能抵得上大导演热门电影的魅力，恐怕目前的中国人民还没有这个雅兴。 <br>那么问题是：谁，出于何种目的在搜索这个词呢？正是因为猛增的搜索量才把这个词送上了百度沸点第一名。 <br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa832ecfba&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa832ecfba&amp;690" border="0" alt="44fea84dhb4fa832ecfba&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa832ecfba&amp;690_thumb.jpg" width="504" height="455"></a> <br>Step 2： <br>扫描金山的对手，看看谁有这个动力和能力。毫无疑问，金山冲击的首要力量是360。安全领域，除了金山和背后的QQ，没有人能挑战360。你当然会问，为什么第一时间从这个角度寻找证据，未免太阴谋论，太小心之心了？说实话吧，作为这个江湖的一员，我对行规，或者说江湖手法，太心知肚明了。如果你懂，不需要多说。 <br>但，360做事一贯从背后下手，表面光滑，哪里来的痕迹可循？ <br>Step 3： <br>关键在于，这次让金山出丑是在百度的地盘上，所以必定要留有痕迹的。因为假如真是360，那百度必定不会跟360合谋。当初360要跟百度合作联手干掉QQ，百度都断然拒绝，据说理由是一条：宁愿跟QQ做敌人，也不跟360做盟友。所以，360如果要借手百度，必定是通过某些正规的渠道，则必然会留下痕迹。 <br>痕迹？柳暗花明又一村。 <br>Step 4： <br>360旗下哪些资源能对搜索量产生影响？进一步归结为，360旗下哪里有搜索框或者间接指向搜索的链接？好吧，思路正确。这个方向直指360导航。这里有360最大的流量，在头屏首要位置有一个明显的搜索框，后面跟着一连串的热门事件的搜索链接。得来全不费工夫，这下证据确凿。在搜索框后面，第一个链接就是“金山泄密门”。360导航每天UV5000万，这个位置至少会带来数万点击。 <br>谢谢360，不遗余力啊。 <br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa87898aaf&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa87898aaf&amp;690" border="0" alt="44fea84dhb4fa87898aaf&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa87898aaf&amp;690_thumb.jpg" width="504" height="102"></a> <br>Step 5： <br>不过你会问：这个地方明明就是放热点搜索词，你凭什么认为360把这个事件当成热门搜索词是蓄意打击金山呢？好问题。当具体点开每个链接后，这个疑问就没有了。只有排在第一名的“金山泄密门”是指向百度，就是这个指向直接推高了百度搜索量。而其他的链接，包括“美赞臣细菌感染”、“市委门前自焚”、“一夜情换名牌”全部都是指向Google。你还需要知道，360导航的搜索合作伙伴是Google而不是百度。为Google带去的每一个流量都是要收费的。不用多说了，“金山泄密门”上了百度沸点，这个比赚两个小钱更珍贵。 <br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8ad1a4d1&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8ad1a4d1&amp;690" border="0" alt="44fea84dhb4fa8ad1a4d1&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8ad1a4d1&amp;690_thumb.jpg" width="504" height="443"></a>&nbsp;<a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8b88a07d&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8b88a07d&amp;690" border="0" alt="44fea84dhb4fa8b88a07d&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8b88a07d&amp;690_thumb.jpg" width="504" height="413"></a> <a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8c762261&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8c762261&amp;690" border="0" alt="44fea84dhb4fa8c762261&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8c762261&amp;690_thumb.jpg" width="504" height="484"></a> <br><br>Step 6： <br>百度啊百度，为什么被360就这么操控了？因为它只认识搜索的数量。而只要一个流量大户有所动作，就可以直接影响甚至控制百度沸点的排行。其实，如果再加入两个指标，如360这样的流量大户就不会这么容易得逞。第一，搜索量的分散度。如果70%以上的搜索量都来自一个地方，比如360，那就要降低这个搜索词的权重。第二，网站的权重。如果360导航有过这种作弊行径，那么从这个网站来的流量就应该降低权重。如果含有搜索词的网页本身就是流量低的网站，那么其权重也应该降低。特地看了下，登载“金山泄密门”的不少网站都属于2B网站。即，拿钱上稿，靠企业公关战渔利，跪着挣钱的小网站。 <br>最后，不能只讲江湖下作，还得说点正事。 <br>CSDN密码泄露这档子事情出来，安全业大局肯定要随之而变。360往劲敌金山身上使点力，那是再自然不过。估计会有两个结果：第一，360们借着东风，让广大网站和网民把账号和密码交给它们来统一管理。我想大多数网站是不会相信360的。但好骗好恐吓的小白网民就未必了。各位自求多福吧。第二，OpenID会乘势而入。小网站既然保护不了账号密码，那就让大网站的统一ID来接管，这本来就是趋势。最有戏的当然莫过于QQ和新浪微博两个社会化账号。这一点，360啊，百度啊，都没啥戏。 <br>经常走夜路，必然撞到鬼。谨以此送给以持续的微创新为互联网公关战添姿添彩的苦B们。你们的未来，真的不那么见得光彩。挣点Option，买座大一点的房子。只是，房子别闹鬼就行。 </p> <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p>转载至贾敬华先生博客: <a href="http://blog.sina.com.cn/s/blog_44fea84d0102dwcr.html">http://blog.sina.com.cn/s/blog_44fea84d0102dwcr.html</a></p><img src ="http://www.cppblog.com/patriking/aggbug/162871.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-26 21:29 <a href="http://www.cppblog.com/patriking/archive/2011/12/26/162871.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>江湖秘籍：如何用百度打击对手【360借百度之刀站金山】</title><link>http://www.cppblog.com/patriking/archive/2011/12/26/162870.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Mon, 26 Dec 2011 13:28:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/26/162870.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162870.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/26/162870.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162870.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162870.html</trackback:ping><description><![CDATA[<p>文章来自:&nbsp; <a href="http://zhexue.sinaapp.com/?p=118">http://zhexue.sinaapp.com/?p=118</a></p> <p>如果你有一个直接对手金山，还有个多年宿敌百度，而金山和百度之间并无恩怨，如何能够借百度之手攻击金山呢？想到了《教父II》里Michael的一句话：“这很难，但没有事情是不可能的。”<br>360做到了。是的，可以把它叫做微创新。<br>Step 1：<br>注意到这件事是从“金山泄密门”上了百度实时热点第一名开始的。毫无疑问，这个事情很奇怪。一个IT界的新闻，居然比“江苏洋垃圾”、“市委门前自焚”、“一夜情换名牌”、“美赞臣细菌感染”、“女教师惨遭虐杀”这些社会民生类新闻有更高的搜索？不符合常识。在仔细看，金山泄密门的搜索指数是20万，对比一下，金陵十三钗是25万，龙门飞甲是17万，好吧，区区金山一个员工的失误能抵得上大导演热门电影的魅力，恐怕目前的中国人民还没有这个雅兴。<br>那么问题是：谁，出于何种目的在搜索这个词呢？正是因为猛增的搜索量才把这个词送上了百度沸点第一名。<br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa832ecfba&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa832ecfba&amp;690" border="0" alt="44fea84dhb4fa832ecfba&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa832ecfba&amp;690_thumb.jpg" width="504" height="455"></a> <br>Step 2：<br>扫描金山的对手，看看谁有这个动力和能力。毫无疑问，金山冲击的首要力量是360。安全领域，除了金山和背后的QQ，没有人能挑战360。你当然会问，为什么第一时间从这个角度寻找证据，未免太阴谋论，太小心之心了？说实话吧，作为这个江湖的一员，我对行规，或者说江湖手法，太心知肚明了。如果你懂，不需要多说。<br>但，360做事一贯从背后下手，表面光滑，哪里来的痕迹可循？<br>Step 3：<br>关键在于，这次让金山出丑是在百度的地盘上，所以必定要留有痕迹的。因为假如真是360，那百度必定不会跟360合谋。当初360要跟百度合作联手干掉QQ，百度都断然拒绝，据说理由是一条：宁愿跟QQ做敌人，也不跟360做盟友。所以，360如果要借手百度，必定是通过某些正规的渠道，则必然会留下痕迹。<br>痕迹？柳暗花明又一村。<br>Step 4：<br>360旗下哪些资源能对搜索量产生影响？进一步归结为，360旗下哪里有搜索框或者间接指向搜索的链接？好吧，思路正确。这个方向直指360导航。这里有360最大的流量，在头屏首要位置有一个明显的搜索框，后面跟着一连串的热门事件的搜索链接。得来全不费工夫，这下证据确凿。在搜索框后面，第一个链接就是“金山泄密门”。360导航每天UV5000万，这个位置至少会带来数万点击。<br>谢谢360，不遗余力啊。<br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa87898aaf&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa87898aaf&amp;690" border="0" alt="44fea84dhb4fa87898aaf&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa87898aaf&amp;690_thumb.jpg" width="504" height="102"></a> <br>Step 5：<br>不过你会问：这个地方明明就是放热点搜索词，你凭什么认为360把这个事件当成热门搜索词是蓄意打击金山呢？好问题。当具体点开每个链接后，这个疑问就没有了。只有排在第一名的“金山泄密门”是指向百度，就是这个指向直接推高了百度搜索量。而其他的链接，包括“美赞臣细菌感染”、“市委门前自焚”、“一夜情换名牌”全部都是指向Google。你还需要知道，360导航的搜索合作伙伴是Google而不是百度。为Google带去的每一个流量都是要收费的。不用多说了，“金山泄密门”上了百度沸点，这个比赚两个小钱更珍贵。<br><a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8ad1a4d1&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8ad1a4d1&amp;690" border="0" alt="44fea84dhb4fa8ad1a4d1&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8ad1a4d1&amp;690_thumb.jpg" width="504" height="443"></a>&nbsp;<a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8b88a07d&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8b88a07d&amp;690" border="0" alt="44fea84dhb4fa8b88a07d&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8b88a07d&amp;690_thumb.jpg" width="504" height="413"></a> <a href="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8c762261&amp;690_2.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="44fea84dhb4fa8c762261&amp;690" border="0" alt="44fea84dhb4fa8c762261&amp;690" src="http://www.cppblog.com/images/cppblog_com/patriking/WindowsLiveWriter/360_12CCE/44fea84dhb4fa8c762261&amp;690_thumb.jpg" width="504" height="484"></a> <br><br>Step 6：<br>百度啊百度，为什么被360就这么操控了？因为它只认识搜索的数量。而只要一个流量大户有所动作，就可以直接影响甚至控制百度沸点的排行。其实，如果再加入两个指标，如360这样的流量大户就不会这么容易得逞。第一，搜索量的分散度。如果70%以上的搜索量都来自一个地方，比如360，那就要降低这个搜索词的权重。第二，网站的权重。如果360导航有过这种作弊行径，那么从这个网站来的流量就应该降低权重。如果含有搜索词的网页本身就是流量低的网站，那么其权重也应该降低。特地看了下，登载“金山泄密门”的不少网站都属于2B网站。即，拿钱上稿，靠企业公关战渔利，跪着挣钱的小网站。<br>最后，不能只讲江湖下作，还得说点正事。<br>CSDN密码泄露这档子事情出来，安全业大局肯定要随之而变。360往劲敌金山身上使点力，那是再自然不过。估计会有两个结果：第一，360们借着东风，让广大网站和网民把账号和密码交给它们来统一管理。我想大多数网站是不会相信360的。但好骗好恐吓的小白网民就未必了。各位自求多福吧。第二，OpenID会乘势而入。小网站既然保护不了账号密码，那就让大网站的统一ID来接管，这本来就是趋势。最有戏的当然莫过于QQ和新浪微博两个社会化账号。这一点，360啊，百度啊，都没啥戏。<br>经常走夜路，必然撞到鬼。谨以此送给以持续的微创新为互联网公关战添姿添彩的苦B们。你们的未来，真的不那么见得光彩。挣点Option，买座大一点的房子。只是，房子别闹鬼就行。  <p></p> <p></p> <p></p> <p></p> <p></p> <p></p> <p>转载至贾敬华先生博客: <a href="http://blog.sina.com.cn/s/blog_44fea84d0102dwcr.html">http://blog.sina.com.cn/s/blog_44fea84d0102dwcr.html</a></p><img src ="http://www.cppblog.com/patriking/aggbug/162870.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-26 21:28 <a href="http://www.cppblog.com/patriking/archive/2011/12/26/162870.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>插值算法应用【拉格朗日插值、牛顿插值】</title><link>http://www.cppblog.com/patriking/archive/2011/12/26/162867.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Mon, 26 Dec 2011 12:43:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/26/162867.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162867.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/26/162867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162867.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162867.html</trackback:ping><description><![CDATA[<p><span style="font-size: medium">本论文转载至：<a href="http://zhexue.sinaapp.com/?p=94">http://zhexue.sinaapp.com/?p=94</a>，转载请注明出处。 </span></p> <p><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp; 首先看题：<span style="font-size: large"><strong><a href="http://poj.org/problem?id=1398">POJ_1398</a></strong></span>。问题：给定N组 f(Xi) = Yi,(1&lt;=i&lt;=N),其中f(x)是一个关于x的N-1次多项式, 即f(x)=a0 + a1*x +a2*x^2 + ...+an-1*x^(n-1)。</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 现在给定一个新的x值，求f(x)。即通过给定的N个等式f(Xi)=Yi，求出任意一个给定的x对应的f(x)值。这个问题可由数值计算中的拉格朗日插值或者牛顿插值解决。<strong><span style="font-size: large"><a href="http://acmloser.appspot.com/media/agpzfmFjbWxvc2VycgwLEgVNZWRpYRjKZQw/ch02_4.pdf">资料下载</a></span></strong>。</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp; 对于POJ_1398，因为给定的Xi=1,2,3,4,...,N，求解的是X=N+1,N+2,N+3,...,N+S,可以使用一个更加简单的方法求解。求解方法如下：</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1): 将f(1),f(2),....,f(N), 赋值给数组Y[N]。</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2): 将Y[N]中数相邻两两做差,得到N-1个数,</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3): 重复(2)N-1次，即只剩下一个数字。</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4): 添加S个相同的数字至(3)得到的数字末尾,重复上述做差的逆操作,最终会得到N+S个数,</span><br><span style="font-size: medium">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 而第N+1,...,N+S个数即为所求。</span><br><span style="font-size: medium">代码如下：</span><br></p><pre lang="c" colla="+" line="1">#include&lt;stdio.h&gt;
#include&lt;string.h&gt;
#define N 105
int x[N];
int f[N][N];
int main()
{
 	int T, m, n;
 	scanf("%d",&amp;T);
 	while(T--)
 	{
		scanf("%d%d",&amp;n, &amp;m);
 		memset(f,0,sizeof(f));
		for(int i = 0; i &lt; n; i++){
			scanf("%d", &amp;f[0][i]);
		}
		for(int j = 1; j &lt; n; j++){
			for(int k = 0; k &lt; n-j; k++){
				f[j][k] = f[j-1][k+1] - f[j-1][k];
			}
		}
		for(int i = 1; i &lt;= m; i++)
			f[n-1][i] = f[n-1][0];

		for(int j = n; j &gt; 0; j--){
			for(int i = 0; i &lt; m; i++){
				f[j-1][n-j+1+i] = f[j-1][n+i-j] + f[j][n+i-j];
			}
		}
		for(int i = n; i &lt; n+m; i++)
			printf("%d ", f[0][i]);
		printf("\n");
	}
 	return 0;
}</pre><img src ="http://www.cppblog.com/patriking/aggbug/162867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-26 20:43 <a href="http://www.cppblog.com/patriking/archive/2011/12/26/162867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>混合图欧拉路例题 ZOJ1992</title><link>http://www.cppblog.com/patriking/archive/2011/12/25/162797.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sun, 25 Dec 2011 13:28:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/25/162797.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162797.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/25/162797.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162797.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162797.html</trackback:ping><description><![CDATA[<p>本文转载至哲学与程序博客：<a href="http://zhexue.sinaapp.com/?p=105">http://zhexue.sinaapp.com/?p=105</a></p> <p>题目来源：<a href="mailto:ZOJ@1992">ZOJ1992</a></p> <p>对于一个混合图，即有有向边又有无向边的图，判断是否存在一条欧拉回路。 <br>解法（转）：混合图欧拉回路用的是网络流。把该图的无向边随便定向，计算每个点的入度和出度。如果有某个点出入度之差为奇数，那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度，也就是总度数为偶数，存在奇数度点必不能有欧拉回路。现在每个点入度和出度之差均为偶数。将这个偶数除以2，得x。即是说，对于每一个点，只要将x条边反向（入&gt;出就是变入，出&gt;入就是变出），就能保证出 = 入。如果每个点都是出 = 入，那么很明显，该图就存在欧拉回路。现在的问题就变成了：该改变哪些边，可以让每个点出 = 入？构造网络流模型。有向边不能改变方向，直接删掉。开始已定向的无向边，定的是什么向，就把网络构建成什么样，边长容量上限1。另新建s和t。对于入 &gt; 出的点u，连接边(u, t)、容量为x，对于出 &gt; 入的点v，连接边(s, v)，容量为x（注意对不同的点x不同。当初由于不小心，在这里错了好几次）。之后，察看是否有满流的分配。有就是能有欧拉回路，没有就是没有。查看流值分配，将所有流量非 0（上限是1，流值不是0就是1）的边反向，就能得到每点入度 = 出度的欧拉图。由于是满流，所以每个入 &gt; 出的点，都有x条边进来，将这些进来的边反向，OK，入 = 出了。对于出 &gt; 入的点亦然。那么，没和s、t连接的点怎么办？和s连接的条件是出 &gt; 入，和t连接的条件是入 &gt; 出，那么这个既没和s也没和t连接的点，自然早在开始就已经满足入 = 出了。那么在网络流过程中，这些点属于“中间点”。我们知道中间点流量不允许有累积的，这样，进去多少就出来多少，反向之后，自然仍保持平衡。所以，就这样，混合图欧拉回路问题，解了。&nbsp; <br></p> <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; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><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>#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>#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"> <br>#include</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"> <br></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000"> std; <br></span><span style="color: #0000ff">#define</span><span style="color: #000000"> N 205</span><span style="color: #000000"> <br></span><span style="color: #0000ff">#define</span><span style="color: #000000"> MAXN N</span><span style="color: #000000"> <br></span><span style="color: #0000ff">#define</span><span style="color: #000000"> inf 100000000</span><span style="color: #000000"> <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> map[N][N]; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> flow[N][N]; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> max_flow(</span><span style="color: #0000ff">int</span><span style="color: #000000"> n,</span><span style="color: #0000ff">int</span><span style="color: #000000"> mat[][MAXN],</span><span style="color: #0000ff">int</span><span style="color: #000000"> source,</span><span style="color: #0000ff">int</span><span style="color: #000000"> sink,</span><span style="color: #0000ff">int</span><span style="color: #000000"> flow[][MAXN]){&nbsp; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> pre[MAXN],que[MAXN],d[MAXN],p,q,t,i,j;&nbsp; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000"> (source</span><span style="color: #000000">==</span><span style="color: #000000">sink) </span><span style="color: #0000ff">return</span><span style="color: #000000"> inf;&nbsp; <br>&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">0</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">)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000"> (j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;flow[i][j</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000"> (;;){&nbsp; <br>&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">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;pre[i</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pre[t</span><span style="color: #000000">=</span><span style="color: #000000">source]</span><span style="color: #000000">=</span><span style="color: #000000">source</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,d[t]</span><span style="color: #000000">=</span><span style="color: #000000">inf;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000"> (p</span><span style="color: #000000">=</span><span style="color: #000000">q</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;p</span><span style="color: #000000">&lt;=</span><span style="color: #000000">q</span><span style="color: #000000">&amp;&amp;!</span><span style="color: #000000">pre[sink];t</span><span style="color: #000000">=</span><span style="color: #000000">que[p</span><span style="color: #000000">++</span><span style="color: #000000">])&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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">0</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">)&nbsp; <br>&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"> (</span><span style="color: #000000">!</span><span style="color: #000000">pre[i]</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">(j</span><span style="color: #000000">=</span><span style="color: #000000">mat[t][i]</span><span style="color: #000000">-</span><span style="color: #000000">flow[t][i]))&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pre[que[q</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">i]</span><span style="color: #000000">=</span><span style="color: #000000">t</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,d[i]</span><span style="color: #000000">=</span><span style="color: #000000">d[t]</span><span style="color: #000000">&lt;</span><span style="color: #000000">j</span><span style="color: #000000">?</span><span style="color: #000000">d[t]:j;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">pre[i]</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">(j</span><span style="color: #000000">=</span><span style="color: #000000">flow[i][t]))&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pre[que[q</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">i]</span><span style="color: #000000">=-</span><span style="color: #000000">t</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,d[i]</span><span style="color: #000000">=</span><span style="color: #000000">d[t]</span><span style="color: #000000">&lt;</span><span style="color: #000000">j</span><span style="color: #000000">?</span><span style="color: #000000">d[t]:j;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000"> (</span><span style="color: #000000">!</span><span style="color: #000000">pre[sink]) </span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp; <br>&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">sink;i</span><span style="color: #000000">!=</span><span style="color: #000000">source;)&nbsp; <br>&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"> (pre[i]</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flow[pre[i]</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">][i]</span><span style="color: #000000">+=</span><span style="color: #000000">d[sink],i</span><span style="color: #000000">=</span><span style="color: #000000">pre[i]</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flow[i][</span><span style="color: #000000">-</span><span style="color: #000000">pre[i]</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">-=</span><span style="color: #000000">d[sink],i</span><span style="color: #000000">=-</span><span style="color: #000000">pre[i]</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp; <br>&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">0</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">) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(mat[source][i] </span><span style="color: #000000">&gt;</span><span style="color: #000000"> flow[source][i]) <br>&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>&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">;&nbsp; <br>} <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> main() <br>{ <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> T, degin[N],degout[N], n, m, x, y, z; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> flag; <br>&nbsp;&nbsp;&nbsp; scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">T); <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">while</span><span style="color: #000000">(T</span><span style="color: #000000">--</span><span style="color: #000000">){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(degin,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(degin)); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(degout,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(degout)); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(map,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(map)); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">x,</span><span style="color: #000000">&amp;</span><span style="color: #000000">y,</span><span style="color: #000000">&amp;</span><span style="color: #000000">z); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; degout[x]</span><span style="color: #000000">++</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; degin[y]</span><span style="color: #000000">++</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">!</span><span style="color: #000000">z)map[x][y]</span><span style="color: #000000">++</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flag </span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000"> i </span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">; i </span><span style="color: #000000">&lt;=</span><span style="color: #000000"> n </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">flag; i</span><span style="color: #000000">++</span><span style="color: #000000">){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">((degin[i]</span><span style="color: #000000">+</span><span style="color: #000000">degout[i])</span><span style="color: #000000">%</span><span style="color: #000000">2</span><span style="color: #000000">)flag</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(degin[i] </span><span style="color: #000000">&gt;</span><span style="color: #000000"> degout[i]) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">] </span><span style="color: #000000">=</span><span style="color: #000000"> (degin[i]</span><span style="color: #000000">-</span><span style="color: #000000">degout[i])</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[</span><span style="color: #000000">0</span><span style="color: #000000">][i] </span><span style="color: #000000">=</span><span style="color: #000000"> (degout[i]</span><span style="color: #000000">-</span><span style="color: #000000">degin[i])</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(flag) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #000000">"</span><span style="color: #000000">impossible\n</span><span style="color: #000000">"</span><span style="color: #000000">); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">else</span><span style="color: #000000">{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(max_flow(n</span><span style="color: #000000">+</span><span style="color: #000000">2</span><span style="color: #000000">,map,</span><span style="color: #000000">0</span><span style="color: #000000">,n</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,flow)) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #000000">"</span><span style="color: #000000">possible\n</span><span style="color: #000000">"</span><span style="color: #000000">); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #000000">"</span><span style="color: #000000">impossible\n</span><span style="color: #000000">"</span><span style="color: #000000">); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; } <br>&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>} <br><br></span></div><img src ="http://www.cppblog.com/patriking/aggbug/162797.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-25 21:28 <a href="http://www.cppblog.com/patriking/archive/2011/12/25/162797.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>树形动态规划 例题POJ3107</title><link>http://www.cppblog.com/patriking/archive/2011/12/25/162796.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sun, 25 Dec 2011 13:16:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/25/162796.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162796.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/25/162796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162796.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162796.html</trackback:ping><description><![CDATA[<p>本文转载至：<a href="http://zhexue.sinaapp.com/?p=104">http://zhexue.sinaapp.com/?p=104</a></p> <p>题目来源：<a href="http://poj.org/problem?id=3107">POJ3107</a></p> <p>给定一棵无根树，删除树中一个节点，剩下各子树的包含的节点数最大值最小，问树中有多少个这样的节点? <br>解法：任意选择一个节点，作为根，进行遍历。对一个节点V，设其子节点为cv[1..k]，f[v]为以节点v为根的子树包含的节点数。 <br>对于每一个节点V，删除V之后剩下子树含有的节点数中最大分别为 max{ f[cv[1]]，f[cv[2]]，....f[cv[k]]，SumNode-(f[cv[1]]+f[cv[2]]+....+f[cv[k]]) }，一次遍历即可求出所有删除一个节点后的最大子树包含的节点数。 <br></p> <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; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"> <br>#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">vector</span><span style="color: #000000">&gt;</span><span style="color: #000000"> <br>#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"> <br>#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></span><span style="color: #0000ff">#define</span><span style="color: #000000"> MAXN 50005 </span><span style="color: #000000"><br></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000"> std; <br>vector</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">int</span><span style="color: #000000">&gt;</span><span style="color: #000000">ansNode; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> maxNumNode; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> n, f[MAXN]; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> pointTree[MAXN]; <br></span><span style="color: #0000ff">struct</span><span style="color: #000000"> Tree{ <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> x,y; <br>}tree[MAXN</span><span style="color: #000000">*</span><span style="color: #000000">2</span><span style="color: #000000">]; <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> len; <br></span><span style="color: #0000ff">bool</span><span style="color: #000000"> cmp(</span><span style="color: #0000ff">struct</span><span style="color: #000000"> Tree a, </span><span style="color: #0000ff">struct</span><span style="color: #000000"> Tree b) <br>{ <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">return</span><span style="color: #000000"> a.x</span><span style="color: #000000">&lt;</span><span style="color: #000000">b.x; <br>} <br></span><span style="color: #0000ff">int</span><span style="color: #000000"> treedp(</span><span style="color: #0000ff">int</span><span style="color: #000000"> parentNode,</span><span style="color: #0000ff">int</span><span style="color: #000000"> thisNode){ <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> maxNode</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> sumChildNode</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> index</span><span style="color: #000000">=</span><span style="color: #000000">pointTree[thisNode]; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">do</span><span style="color: #000000">{ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> childNode</span><span style="color: #000000">=</span><span style="color: #000000">tree[index].y; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(childNode </span><span style="color: #000000">!=</span><span style="color: #000000"> parentNode) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; { <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; f[childNode]</span><span style="color: #000000">=</span><span style="color: #000000">treedp(thisNode,childNode); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sumChildNode</span><span style="color: #000000">+=</span><span style="color: #000000">f[childNode]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(f[childNode]</span><span style="color: #000000">&gt;</span><span style="color: #000000">maxNode)maxNode</span><span style="color: #000000">=</span><span style="color: #000000">f[childNode]; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; index</span><span style="color: #000000">++</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp; }</span><span style="color: #0000ff">while</span><span style="color: #000000">(index</span><span style="color: #000000">&lt;</span><span style="color: #000000">len </span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000"> tree[index].x</span><span style="color: #000000">==</span><span style="color: #000000">tree[index</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">].x); <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(maxNode</span><span style="color: #000000">&lt;</span><span style="color: #000000">n</span><span style="color: #000000">-</span><span style="color: #000000">sumChildNode</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)maxNode</span><span style="color: #000000">=</span><span style="color: #000000">n</span><span style="color: #000000">-</span><span style="color: #000000">sumChildNode</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">; <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(maxNode</span><span style="color: #000000">&lt;</span><span style="color: #000000">maxNumNode){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxNumNode</span><span style="color: #000000">=</span><span style="color: #000000">maxNode; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ansNode.clear(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ansNode.push_back(thisNode); <br>&nbsp;&nbsp;&nbsp; }</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(maxNode</span><span style="color: #000000">==</span><span style="color: #000000">maxNumNode){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ansNode.push_back(thisNode); <br>&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">return</span><span style="color: #000000"> sumChildNode</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">; <br>} <br><br></span><span style="color: #0000ff">int</span><span style="color: #000000"> main(</span><span style="color: #0000ff">int</span><span style="color: #000000"> argc,</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">argv[]) <br>{ <br>&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</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">!=</span><span style="color: #000000">EOF){ <br>&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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</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">){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">int</span><span style="color: #000000"> x,y; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 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">x,</span><span style="color: #000000">&amp;</span><span style="color: #000000">y); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree[len].x</span><span style="color: #000000">=</span><span style="color: #000000">x; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree[len</span><span style="color: #000000">++</span><span style="color: #000000">].y</span><span style="color: #000000">=</span><span style="color: #000000">y; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree[len].x</span><span style="color: #000000">=</span><span style="color: #000000">y; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tree[len</span><span style="color: #000000">++</span><span style="color: #000000">].y</span><span style="color: #000000">=</span><span style="color: #000000">x; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort(tree,tree</span><span style="color: #000000">+</span><span style="color: #000000">len,cmp); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pointTree[tree[</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">; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</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">len;i</span><span style="color: #000000">++</span><span style="color: #000000">){ <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">if</span><span style="color: #000000">(tree[i].x </span><span style="color: #000000">!=</span><span style="color: #000000"> tree[i</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">].x) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pointTree[tree[i].x] </span><span style="color: #000000">=</span><span style="color: #000000"> i; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ansNode.clear(); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxNumNode</span><span style="color: #000000">=</span><span style="color: #000000">n; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; treedp(</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">1</span><span style="color: #000000">); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sort(ansNode.begin(),ansNode.end()); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000"> i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">ansNode.size();i</span><span style="color: #000000">++</span><span style="color: #000000">) <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d </span><span style="color: #000000">"</span><span style="color: #000000">,ansNode[i]); <br>&nbsp;&nbsp;&nbsp; } <br>&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>}</span></div><img src ="http://www.cppblog.com/patriking/aggbug/162796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-25 21:16 <a href="http://www.cppblog.com/patriking/archive/2011/12/25/162796.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>美NASA发现&amp;quot;宜居带&amp;quot;类地行星开普勒-22b, 科学家乐观悲观各执己见</title><link>http://www.cppblog.com/patriking/archive/2011/12/25/162790.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sun, 25 Dec 2011 11:30:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/12/25/162790.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/162790.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/12/25/162790.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/162790.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/162790.html</trackback:ping><description><![CDATA[<p align="left"><span style="font-size: medium">本文转载至：<a href="http://zhexue.sinaapp.com/?p=101">http://zhexue.sinaapp.com/?p=101</a></span></p> <p align="left"><span style="font-size: medium">美国宇航局所属开普勒空间望远镜于2011年12月确认了首颗位于所谓“宜居带”中，并且围绕一颗和我们的太阳非常相似的恒星公转的系外行星。这颗最新确认的系外行星名为开普勒-22b(Kepler-22b)。截止2 011年2月份，科学家们共报告发现54颗位于宜居带的系外行星候选体，其中Kepler-22b是首颗得到确认的。　　</span></p> <p align="left"><span style="font-size: medium">威廉姆·布鲁基(William Borucki)是宇航局加州埃姆斯研究中心科学家，也是开普勒望远镜项目的首席科学家，正是他领导了这一次发现Kepler-22b的工作。他说：“我们第一次观察到这颗系外行星可能存在的零星线索是在望远镜升空调试工作完成后仅仅3天的时候，而到了2010年假期的时候我们终于观察到3次重复显现的凌星现象，从而可以确定此项发现。”</span></p> <p align="center"><span style="font-size: medium"><a href="http://colorway-wordpress.stor.sinaapp.com/uploads/2011/12/d8f9d72a6059252dbaa9cb4d349b033b5bb5b939.jpg"><img class="aligncenter" title="d8f9d72a6059252dbaa9cb4d349b033b5bb5b939" border="0" alt="d8f9d72a6059252dbaa9cb4d349b033b5bb5b939" src="http://colorway-wordpress.stor.sinaapp.com/uploads/2011/12/d8f9d72a6059252dbaa9cb4d349b033b5bb5b939_thumb.jpg" width="541" height="488"></a></span></p> <p align="center"><span style="font-size: medium">开普勒 22b行星</span></p> <p><span style="font-size: medium"><a href="http://colorway-wordpress.stor.sinaapp.com/uploads/2011/12/3b87e950352ac65c9e94813afbf2b21192138ae2.jpg"><img class="aligncenter" title="3b87e950352ac65c9e94813afbf2b21192138ae2" border="0" alt="3b87e950352ac65c9e94813afbf2b21192138ae2" src="http://colorway-wordpress.stor.sinaapp.com/uploads/2011/12/3b87e950352ac65c9e94813afbf2b21192138ae2_thumb.jpg" width="644" height="516"></a></span></p> <p align="center"><span style="font-size: medium">开普勒-22b行星系统和太阳系行星系统对比图</span></p> <p><span style="font-size: medium">“开普勒-22b”被确认的消息公布后，吸引了全球科学家的关注。一部分科学家为此欢欣鼓舞， 认为该星球宜居而且可能已经有高等生物居住，必将是能够拯救未来人类的一个极佳的避难所。可是也有人认为，不能急于下结论。这些“悲观”派的科学家认 为，600光年的距离对目前的人类来说，是一个无法跨越的障碍。也有科学家称，人类的进化是若干偶然因素造就的，“开普勒-22b”上是否会有类人的智能 生物很是个问题。</span></p> <p><span style="font-size: medium">乐观派 跨越600光年不是梦</span></p> <p><span style="font-size: medium">乐观派的科学家认为，“开普勒-22b”不仅宜居，而且很可能已经有人居。虽然“开普勒-b22”的气候条件听起来很诱人，可是马上移民还是不太现实的，因 为距离地球的600光年是一个很大的障碍。尽管如此，科学家还是认为，技术的发展很难预料，也许将来某一天，600光年对人类来说不过是小菜一碟，登“开 普勒”将不再是一件难事。</span></p> <p><span style="font-size: medium">英国科学家称，地球的寿命虽然仍有数十亿年，可是毕竟是有限的，而且由于人类活动导致地球环境的恶化，使得地球的“宜居”性正在直线下降。在宇宙中，除银河系外，还有500亿个其他的星系，每个星系又或许有500亿颗星星，因此，从概率分析，外星人存在的可能性是有的。</span></p> <p><span style="font-size: medium">华盛顿卡奈基科学学院博士阿兰·鲍斯有份参与对开普勒望远镜获得的星球数据进行分析，他认为，“越来越多的人认为，栖息要这个宇宙的人类其实非常多，开普勒的发现也支持了这个观点。”太空中有“邻居”对地球人移居太空来说绝对是个利好的消息。</span></p> <p><span style="font-size: medium">悲观派 2.0版地球只有细菌</span></p> <p><span style="font-size: medium">基 于“开普勒-22b”得天独厚的条件，英国广播公司将其称为地球的“2.0版”。法新社报道认为，“开普勒-22b”虽然被确认为第一颗存在于太阳系外的 宜居行星，但并不意味着那里就一定存在生命。社会学家认为，随着地球人口越来越稠密，这颗宜居行星将来可以成为人类的新家园，不过“新家园”的构想受到了 很多人的质疑。认为那里的环境或许只有细菌生存。</span></p> <p><span style="font-size: medium">球虽好却遥不可及</span></p> <p><span style="font-size: medium">悲观派的科学家认为，以现在的科技水平，人类根本不可能进行600光年的长距离远征。其次，尽管它被认为“可能”存在水和陆地，但专家尚未确定这颗行星的组成成分。即便到了人类可以移民时，这颗行星上如果有智慧生物，对人类来说也是一个难题。</span></p> <p><span style="font-size: medium">中 国空间技术研究院研究员庞之浩也表示，人类亲自前往火星验证生命存在尚有难度，更不用说去往更远的类似“开普勒-22b”这样的遥远星球了。现阶段，人们 只能通过观测来初步断定某个星球是否适宜生命生存。“像人类这样的高等生命如果能够看到宇宙中的其他星球，那么同理，这些星球的高等智慧生命也应该能够看 到我们。如果这些外星球生命没有联系我们，则可以初步断定，这些星球上面没有我们期盼的高等智慧的外星人，”庞之浩说。</span></p> <p><span style="font-size: medium">生物进化没那么简单</span></p> <p><span style="font-size: medium">伦 敦大学学院太空生物学家刘易斯·达特奈尔在谈及“开普勒-22b”上是否存在智慧生命时说：“生命形成过程中需要跨越许多障碍，我们不知道生命起源有多艰 难。到目前为止，人类已知的存在生命的星球只有一个，那就是地球。”科学家认为，即使“开普勒-22b”拥有适合生物居住的环境，甚至像地球一样出现单细 胞生命，可能也无法模仿地球上细菌的进化之路，从细菌进化到真菌、植物、乃至人类有无数瓶颈需要突破，即使是真菌的形成过程也是万分复杂的。人们总以为进 化是通往智慧生命的途径，但实际上我们之所以成为人类，是太多奇迹堆叠的结果，而“开普勒-22b”可能没有如此幸运。</span></p> <p><span style="font-size: medium">英国媒体称，和所有类似的故事一样，人类并没有见到这个太空的邻居；而且即使见了，也可能没那么让人激动。有科学家认为，即使该星球上有生命，也只会是细菌一样的低等生物。虽然也会有其不寻常之处，比如在火山口生存，以及靠吃泥土生存等，却不太可能是一种高等生物。</span></p><img src ="http://www.cppblog.com/patriking/aggbug/162790.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-12-25 19:30 <a href="http://www.cppblog.com/patriking/archive/2011/12/25/162790.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最小树形图</title><link>http://www.cppblog.com/patriking/archive/2011/05/26/147197.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Thu, 26 May 2011 05:22:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/05/26/147197.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/147197.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/05/26/147197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/147197.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/147197.html</trackback:ping><description><![CDATA[何谓最小树形图，最小树形图，在一个有向图中，定义某个节点为根节点，由该根节点扩展出来的一颗有向的生成树，并且使这棵树的权值最小。练习题<a id="POJ3164" href="http://poj.org/problem?id=3164">POJ3164</a>，<br /><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><img id="Code_Closed_Image_131756" onclick="this.style.display='none'; Code_Closed_Text_131756.style.display='none'; Code_Open_Image_131756.style.display='inline'; Code_Open_Text_131756.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_131756" style="display: none;" onclick="this.style.display='none'; Code_Open_Text_131756.style.display='none'; Code_Closed_Image_131756.style.display='inline'; Code_Closed_Text_131756.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_131756" style="border: 1px solid #808080; background-color: #ffffff;"></span><span id="Code_Open_Text_131756" style="display: none;"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080;">&nbsp;1</span>&nbsp;<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 /></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br /></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">#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 /></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;MAXN&nbsp;205</span><span style="color: #000000;"><br /></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;dis(x1,y1,x2,y2)&nbsp;(sqrt((x1-x2)*(x1-x2)&nbsp;+&nbsp;(y1-y2)*(y1-y2)))</span><span style="color: #000000;"><br /></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;eps&nbsp;1e-5</span><span style="color: #000000;"><br /></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">typedef&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;elem_t;<br /></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;inf&nbsp;1e10</span><span style="color: #000000;"><br /></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x[MAXN],&nbsp;y[MAXN];<br /></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;map[MAXN][MAXN];<br /></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pre[MAXN];<br /></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c[MAXN][MAXN],&nbsp;l[MAXN],&nbsp;p[MAXN];<br /></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">elem_t&nbsp;edmonds(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,elem_t&nbsp;mat[][MAXN],</span><span style="color: #0000ff;">int</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;pre)<br /></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">{<br /></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;elem_t&nbsp;ret</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m</span><span style="color: #000000;">=</span><span style="color: #000000;">n,t,i,j,k;<br /></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;l[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">i,i</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br /></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">do</span><span style="color: #000000;">{<br /></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(c,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(c));<br /></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(p,</span><span style="color: #000000;">0xff</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(p));<br /></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(t</span><span style="color: #000000;">=</span><span style="color: #000000;">m,i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m;c[i][i]</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">,i</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br /></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">t;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(l[i]</span><span style="color: #000000;">==</span><span style="color: #000000;">i</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">!=-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br /></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&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;">if</span><span style="color: #000000;">&nbsp;(l[j]</span><span style="color: #000000;">==</span><span style="color: #000000;">j</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">i</span><span style="color: #000000;">!=</span><span style="color: #000000;">j</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">mat[j][i]</span><span style="color: #000000;">+</span><span style="color: #000000;">eps</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">inf</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">(p[i]</span><span style="color: #000000;">==-</span><span style="color: #000000;">1</span><span style="color: #000000;">||</span><span style="color: #000000;">mat[j][i]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">mat[p[i]][i]))<br /></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">j;<br /></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&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;">&nbsp;((pre[i]</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;">)<br /></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&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;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&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;">&nbsp;(c[i][p[i]]){<br /></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&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;">for</span><span style="color: #000000;">&nbsp;(j</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">m;mat[j][m]</span><span style="color: #000000;">=</span><span style="color: #000000;">mat[m][j]</span><span style="color: #000000;">=</span><span style="color: #000000;">inf,j</span><span style="color: #000000;">++</span><span style="color: #000000;">);<br /></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&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;">for</span><span style="color: #000000;">&nbsp;(k</span><span style="color: #000000;">=</span><span style="color: #000000;">i;l[k]</span><span style="color: #000000;">!=</span><span style="color: #000000;">m;l[k]</span><span style="color: #000000;">=</span><span style="color: #000000;">m,k</span><span style="color: #000000;">=</span><span style="color: #000000;">p[k])<br /></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">for</span><span style="color: #000000;">(j</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;">if</span><span style="color: #000000;">(l[j]</span><span style="color: #000000;">==</span><span style="color: #000000;">j){<br /></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;">if</span><span style="color: #000000;">(mat[j][k]</span><span style="color: #000000;">-</span><span style="color: #000000;">mat[p[k]][k]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">mat[j][m])<br /></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[j][m]</span><span style="color: #000000;">=</span><span style="color: #000000;">mat[j][k]</span><span style="color: #000000;">-</span><span style="color: #000000;">mat[p[k]][k];<br /></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;">if</span><span style="color: #000000;">(mat[k][j]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">mat[m][j])<br /></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[m][j]</span><span style="color: #000000;">=</span><span style="color: #000000;">mat[k][j];<br /></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c[m][m]</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">,l[m]</span><span style="color: #000000;">=</span><span style="color: #000000;">m,m</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&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;">if</span><span style="color: #000000;">&nbsp;(c[i][j])<br /></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">for</span><span style="color: #000000;">&nbsp;(k</span><span style="color: #000000;">=</span><span style="color: #000000;">p[i];k</span><span style="color: #000000;">!=-</span><span style="color: #000000;">1</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">l[k]</span><span style="color: #000000;">==</span><span style="color: #000000;">k;c[k][j]</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">,k</span><span style="color: #000000;">=</span><span style="color: #000000;">p[k]);<br /></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(t</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m);<br /></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(;m</span><span style="color: #000000;">--&gt;</span><span style="color: #000000;">n;pre[k]</span><span style="color: #000000;">=</span><span style="color: #000000;">pre[m])<br /></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</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 /></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(l[i]</span><span style="color: #000000;">==</span><span style="color: #000000;">m){<br /></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&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;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">m;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&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;">if</span><span style="color: #000000;">&nbsp;(pre[j]</span><span style="color: #000000;">==</span><span style="color: #000000;">m</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">mat[i][j]</span><span style="color: #000000;">==</span><span style="color: #000000;">mat[m][j])<br /></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[j]</span><span style="color: #000000;">=</span><span style="color: #000000;">i;<br /></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&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;">&nbsp;(mat[pre[m]][m]</span><span style="color: #000000;">==</span><span style="color: #000000;">mat[pre[m]][i]</span><span style="color: #000000;">-</span><span style="color: #000000;">mat[pre[i]][i])<br /></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="color: #000000;">=</span><span style="color: #000000;">i;<br /></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</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;">)<br /></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(pre[i]</span><span style="color: #000000;">!=-</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret</span><span style="color: #000000;">+=</span><span style="color: #000000;">mat[pre[i]][i];<br /></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;ret;<br /></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">}<br /></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;"><br /></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main(){<br /></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,&nbsp;m;<br /></span><span style="color: #008080;">66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;s,&nbsp;t;<br /></span><span style="color: #008080;">67</span>&nbsp;<span style="color: #000000;">&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 /></span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br /></span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;">&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;">,x</span><span style="color: #000000;">+</span><span style="color: #000000;">i,y</span><span style="color: #000000;">+</span><span style="color: #000000;">i);<br /></span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;MAXN;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;j&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;j&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;MAXN;&nbsp;j</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][j]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;inf;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080;">74</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;n;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br /></span><span style="color: #008080;">75</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080;">77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br /></span><span style="color: #008080;">78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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;">s,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">t);<br /></span><span style="color: #008080;">79</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000;">--</span><span style="color: #000000;">,&nbsp;t</span><span style="color: #000000;">--</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">80</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[s][t]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dis(x[s],y[s],x[t],y[t]);<br /></span><span style="color: #008080;">81</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">82</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[</span><span style="color: #000000;">0</span><span style="color: #000000;">]</span><span style="color: #000000;">=-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br /></span><span style="color: #008080;">83</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;edmonds(n,map,pre);<br /></span><span style="color: #008080;">84</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(ans&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080;">85</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">poor&nbsp;snoopy\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br /></span><span style="color: #008080;">86</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br /></span><span style="color: #008080;">87</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%.2lf\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ans);<br /></span><span style="color: #008080;">88</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span><span style="color: #008080;">89</span>&nbsp;<span style="color: #000000;">&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 /></span><span style="color: #008080;">90</span>&nbsp;<span style="color: #000000;">}<br /></span><span style="color: #008080;">91</span>&nbsp;<span style="color: #000000;"><br /></span><span style="color: #008080;">92</span>&nbsp;<span style="color: #000000;"></span></span></div>解决该问题的算法有两位中国人提出，有位同学将该论文总结一下：<br /><div>最小树形图算法(Zhu-Liu Algorithm)： <p><span>1.<span>&nbsp; </span></span>设最小树形图的总权值为cost，置cost为0。</p> <p><span>2.<span>&nbsp; </span></span>除源点外，为其他所有节点Vi找一条权值最小的入边，加入集合T。T就是最短边的集合。加边的方法：遍历所有点到Vi的边中权值最小的加入集合T，记pre[Vi]为该边的起点，mincost[Vi]为该边的权值。</p> <p><span>3.<span>&nbsp; </span></span>检查集合T中的边是否存在有向环，有则转到步骤4，无则转到步骤5。这里需要利用pre数组，枚举检查过的点作为搜索的起点，类似dfs的操作判断有向环。</p> <p><span>4.<span>&nbsp; </span></span>将有向环缩成一个点。设环中有点{Vk1,Vk2,&#8230;,Vki}共i个点，用Vk代替缩成的点。在压缩后的图中，更新所有不在环中的点V到Vk的距离：</p> <p>map[V][Vk] = min {map[V][Vkj]-mincost[Vki]} 1&lt;=j&lt;=i；</p> <p>map[Vk][V] = min {map[Vkj][V]}<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&lt;=j&lt;=I</span>。</p> <p><span>5.<span>&nbsp; </span></span>cost加上T中有向边的权值总和就是最小树形图的权值总和。</p></div><img src ="http://www.cppblog.com/patriking/aggbug/147197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-05-26 13:22 <a href="http://www.cppblog.com/patriking/archive/2011/05/26/147197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二分图匹配相关的几个概念</title><link>http://www.cppblog.com/patriking/archive/2011/02/23/140485.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Wed, 23 Feb 2011 01:30:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/02/23/140485.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/140485.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/02/23/140485.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/140485.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/140485.html</trackback:ping><description><![CDATA[二分图：是这样一个图，它的顶点可以分类两个集合X和Y，所有的边关联在两个顶点中，恰好一个属于集合Ｘ，另一个属于集合Ｙ。<br>最大匹配： 图中包含边数最多的匹配称为图的最大匹配。<br>完美匹配： 如果所有点都在匹配边上，称这个最大匹配是完美匹配。<br>最小覆盖： 最小覆盖要求用最少的点（Ｘ集合或Ｙ集合的都行）让每条边都至少和其中一个点关联。可以证明：最少的点（即覆盖数）＝最大匹配数<br>最小路径覆盖：用尽量少的不相交简单路径覆盖有向无环图Ｇ的所有结点。解决此类问题可以建立一个二分图模型。把所有顶点i拆成两个：Ｘ结点集中的i和Y结点集中的i',如果有边i-&gt;j，则在二分图中引入边i-&gt;j'，设二分图最大匹配为m,则结果就是n-m。<br>最大独立集问题：在Ｎ个点的图G中选出m个点，使这m个点两两之间没有边．求m最大值．如果图Ｇ满足二分图条件，则可以用二分图匹配来做．最大独立集点数 = N - 最大匹配数。<br><img src ="http://www.cppblog.com/patriking/aggbug/140485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-02-23 09:30 <a href="http://www.cppblog.com/patriking/archive/2011/02/23/140485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOJ@3018 二维线段树 </title><link>http://www.cppblog.com/patriking/archive/2011/01/24/139224.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Mon, 24 Jan 2011 06:53:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/01/24/139224.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/139224.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/01/24/139224.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/139224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/139224.html</trackback:ping><description><![CDATA[解法:
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2391826&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-01-24&nbsp;14:47:58&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;840&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17756&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redsea<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2391828&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-01-24&nbsp;14:54:21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3018&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;840&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17756&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redsea</span><span style="color: #008000;"><br></span><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>#include</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;MAXN&nbsp;500000</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;N&nbsp;20002</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;seg<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dx,&nbsp;dy,&nbsp;ux,&nbsp;uy;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ch[</span><span style="color: #000000;">4</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;total;<br>}sgt[MAXN];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sgtn;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ans;<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;w(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dx,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dy,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ux,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;uy)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;midx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(dx</span><span style="color: #000000;">+</span><span style="color: #000000;">ux)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;midy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(dy</span><span style="color: #000000;">+</span><span style="color: #000000;">uy)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(x</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">dx&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;x</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">midx){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(y</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">dy&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;y</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">midy)<br>&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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&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;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(y</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">dy&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;y</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">midy)<br>&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;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&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;">3</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;init(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dx,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ux,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dy,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;uy)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].dx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dx;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].ux&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;ux;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].dy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;dy;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].uy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;uy;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].total&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;">4</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[sgtn].ch[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgtn</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sgtn</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;root,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].dx&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sgt[root].ux&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].dx&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].dy&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;sgt[root].uy&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].dy&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;y){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].total&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;id&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w(x,y,sgt[root].dx,&nbsp;sgt[root].dy,&nbsp;sgt[root].ux,&nbsp;sgt[root].uy);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;midx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(sgt[root].dx</span><span style="color: #000000;">+</span><span style="color: #000000;">sgt[root].ux)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;midy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(sgt[root].dy</span><span style="color: #000000;">+</span><span style="color: #000000;">sgt[root].uy)</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].total&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;a;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(id&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;init(sgt[root].dx,midx,sgt[root].dy,midy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(sgt[root].ch[id],x,y,a);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(id&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;init(sgt[root].dx,midx,midy</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,sgt[root].uy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(sgt[root].ch[id],x,y,a);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(id&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;init(midx</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,sgt[root].ux,sgt[root].dy,midy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(sgt[root].ch[id],x,y,a);<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[root].ch[id]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;init(midx</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,sgt[root].ux,midy</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,sgt[root].uy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(sgt[root].ch[id],x,y,a);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;sum(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;root,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dx,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dy,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ux,&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;uy)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(root&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].dx&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;ux&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;sgt[root].ux&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;dx&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;sgt[root].dy&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;uy&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;sgt[root].uy&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;dy)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(sgt[root].dx&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;dx&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].ux&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;ux&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].dy&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;dy&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;sgt[root].uy&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;uy)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;sgt[root].total;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;">4</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(sgt[root].ch[i],dx,dy,ux,uy);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;opes[</span><span style="color: #000000;">500</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;now;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x,&nbsp;y,&nbsp;z;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x1,&nbsp;x2,&nbsp;y1,&nbsp;y2;&nbsp;&nbsp;&nbsp;&nbsp;<br>&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;">%s</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;opes)&nbsp;</span><span style="color: #000000;">!=</span><span style="color: #000000;">&nbsp;EOF){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;opes[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getchar();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgtn&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].total&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].dx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].dy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].ux&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">20000</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].uy&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">20000</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;">4</span><span style="color: #000000;">;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sgt[</span><span style="color: #000000;">0</span><span style="color: #000000;">].ch[i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(now&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">E</span><span style="color: #000000;">'</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gets(opes);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(opes[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">0</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;opes[</span><span style="color: #000000;">0</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">9</span><span style="color: #000000;">'</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;opes[</span><span style="color: #000000;">0</span><span style="color: #000000;">];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(now&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">I</span><span style="color: #000000;">'</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sscanf(opes,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">z);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;insert(</span><span style="color: #000000;">0</span><span style="color: #000000;">,x,y,z);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sscanf(opes,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">%d&nbsp;%d&nbsp;%d&nbsp;%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x1,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x2&nbsp;,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y1,&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y2);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum(</span><span style="color: #000000;">0</span><span style="color: #000000;">,x1,y1,x2,y2);&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;ans);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&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>}<br></span></div>
二维线段树。<br><br><br><img src ="http://www.cppblog.com/patriking/aggbug/139224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-01-24 14:53 <a href="http://www.cppblog.com/patriking/archive/2011/01/24/139224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>混合图欧拉路(判断)</title><link>http://www.cppblog.com/patriking/archive/2011/01/24/139209.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Mon, 24 Jan 2011 02:51:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/01/24/139209.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/139209.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/01/24/139209.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/139209.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/139209.html</trackback:ping><description><![CDATA[问题：对于一个混合图，即有有向边又有无向边的图，判断是否存在一条欧拉回路。<br>解法（转）：混合图欧拉回路用的是网络流。把该图的无向边随便定向，计算每个点的入度和出度。如果有某个点出入度之差为奇数，那么肯定不存在欧拉回路。因为欧拉回路要求每点入度 = 出度，也就是总度数为偶数，存在奇数度点必不能有欧拉回路。现在每个点入度和出度之差均为偶数。将这个偶数除以2，得x。即是说，对于每一个点，只要将x条边反向（入&gt;出就是变入，出&gt;入就是变出），就能保证出 = 入。如果每个点都是出 = 入，那么很明显，该图就存在欧拉回路。现在的问题就变成了：该改变哪些边，可以让每个点出 = 入？构造网络流模型。有向边不能改变方向，直接删掉。开始已定向的无向边，定的是什么向，就把网络构建成什么样，边长容量上限1。另新建s和t。对于入 &gt; 出的点u，连接边(u, t)、容量为x，对于出 &gt; 入的点v，连接边(s, v)，容量为x（注意对不同的点x不同。当初由于不小心，在这里错了好几次）。之后，察看是否有满流的分配。有就是能有欧拉回路，没有就是没有。查看流值分配，将所有流量非 0（上限是1，流值不是0就是1）的边反向，就能得到每点入度 = 出度的欧拉图。由于是满流，所以每个入 &gt; 出的点，都有x条边进来，将这些进来的边反向，OK，入 = 出了。对于出 &gt; 入的点亦然。那么，没和s、t连接的点怎么办？和s连接的条件是出 &gt; 入，和t连接的条件是入 &gt; 出，那么这个既没和s也没和t连接的点，自然早在开始就已经满足入 = 出了。那么在网络流过程中，这些点属于&#8220;中间点&#8221;。我们知道中间点流量不允许有累积的，这样，进去多少就出来多少，反向之后，自然仍保持平衡。所以，就这样，混合图欧拉回路问题，解了。<br><a  href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=992">ZOJ@1992</a><br>
<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;2391682&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2011-01-24&nbsp;10:49:56&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1992&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;90&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;508&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;redsea</span><span style="color: #008000;"><br></span><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>#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>#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">algorithm</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>#include</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">string</span><span style="color: #000000;">.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">using</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">namespace</span><span style="color: #000000;">&nbsp;std;<br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;N&nbsp;205</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;MAXN&nbsp;N</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">#define</span><span style="color: #000000;">&nbsp;inf&nbsp;100000000</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;map[N][N];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flow[N][N];<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;max_flow(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;mat[][MAXN],</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;source,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sink,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flow[][MAXN]){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;pre[MAXN],que[MAXN],d[MAXN],p,q,t,i,j;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(source</span><span style="color: #000000;">==</span><span style="color: #000000;">sink)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;inf;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</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;">)&nbsp;<br>&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;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;flow[i][j</span><span style="color: #000000;">++</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(;;){&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;pre[i</span><span style="color: #000000;">++</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[t</span><span style="color: #000000;">=</span><span style="color: #000000;">source]</span><span style="color: #000000;">=</span><span style="color: #000000;">source</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,d[t]</span><span style="color: #000000;">=</span><span style="color: #000000;">inf;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(p</span><span style="color: #000000;">=</span><span style="color: #000000;">q</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;p</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">q</span><span style="color: #000000;">&amp;&amp;!</span><span style="color: #000000;">pre[sink];t</span><span style="color: #000000;">=</span><span style="color: #000000;">que[p</span><span style="color: #000000;">++</span><span style="color: #000000;">])&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</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;">)&nbsp;<br>&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;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">(j</span><span style="color: #000000;">=</span><span style="color: #000000;">mat[t][i]</span><span style="color: #000000;">-</span><span style="color: #000000;">flow[t][i]))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[que[q</span><span style="color: #000000;">++</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">i]</span><span style="color: #000000;">=</span><span style="color: #000000;">t</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,d[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">d[t]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">j</span><span style="color: #000000;">?</span><span style="color: #000000;">d[t]:j;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">(j</span><span style="color: #000000;">=</span><span style="color: #000000;">flow[i][t]))&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[que[q</span><span style="color: #000000;">++</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">i]</span><span style="color: #000000;">=-</span><span style="color: #000000;">t</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">,d[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">d[t]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">j</span><span style="color: #000000;">?</span><span style="color: #000000;">d[t]:j;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">pre[sink])&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">sink;i</span><span style="color: #000000;">!=</span><span style="color: #000000;">source;)&nbsp;<br>&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;">&nbsp;(pre[i]</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flow[pre[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">][i]</span><span style="color: #000000;">+=</span><span style="color: #000000;">d[sink],i</span><span style="color: #000000;">=</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flow[i][</span><span style="color: #000000;">-</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">-=</span><span style="color: #000000;">d[sink],i</span><span style="color: #000000;">=-</span><span style="color: #000000;">pre[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">=</span><span style="color: #000000;">0</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;">)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(mat[source][i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;flow[source][i])<br>&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>&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;">;&nbsp;<br>}<br></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;T,&nbsp;degin[N],degout[N],&nbsp;n,&nbsp;m,&nbsp;x,&nbsp;y,&nbsp;z;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flag;<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">T);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(T</span><span style="color: #000000;">--</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(degin,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(degin));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(degout,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(degout));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(map,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(map));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</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;m;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%d%d%d</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">x,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">y,</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">z);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;degout[x]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;degin[y]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">z)map[x][y]</span><span style="color: #000000;">++</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flag&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;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;i&nbsp;</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">!</span><span style="color: #000000;">flag;&nbsp;i</span><span style="color: #000000;">++</span><span style="color: #000000;">){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">((degin[i]</span><span style="color: #000000;">+</span><span style="color: #000000;">degout[i])</span><span style="color: #000000;">%</span><span style="color: #000000;">2</span><span style="color: #000000;">)flag</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(degin[i]&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;degout[i])<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][n</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(degin[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">degout[i])</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[</span><span style="color: #000000;">0</span><span style="color: #000000;">][i]&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(degout[i]</span><span style="color: #000000;">-</span><span style="color: #000000;">degin[i])</span><span style="color: #000000;">/</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(flag)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">impossible\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(max_flow(n</span><span style="color: #000000;">+</span><span style="color: #000000;">2</span><span style="color: #000000;">,map,</span><span style="color: #000000;">0</span><span style="color: #000000;">,n</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,flow))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">possible\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">impossible\n</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&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>}<br><br></span></div>
<br><br><img src ="http://www.cppblog.com/patriking/aggbug/139209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-01-24 10:51 <a href="http://www.cppblog.com/patriking/archive/2011/01/24/139209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个小故事（转）</title><link>http://www.cppblog.com/patriking/archive/2011/01/22/139122.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Sat, 22 Jan 2011 10:55:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/01/22/139122.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/139122.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/01/22/139122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/139122.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/139122.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 陶艺老师在第一天说要将学生分成两组，工作室里坐在左边的学生将只以他们制作的陶器数量进行评分，而右边的学生只以他们制作的陶器的质量对其进行考核。进程很简单，最后上课那天，老师把家中盥洗室里的体重秤带来称数量评定组学生的作业，瓦罐总重量达到五十磅给&#8220;A&#8221;，四十磅的评&#8220;B&#8221;，以此类推。质量评定组学生只要做一个罐子，但只要很完美就能得&#8220;A&#8221;。到了最终评判的时候出现了一个奇怪的现象：最好的作品都出自于数量评定组的学生。看来在数量评定组学生辛苦地尽力做出更多陶艺作品时，他们从错误中不断地学到新的东西，而质量评定组的学生坐在那里思考如何运用理论做出&#8220;完美&#8221;作品，最终看不到他们努力的成果，只留下一大堆空泛的理论和死气沉沉的黏土。<br><img src ="http://www.cppblog.com/patriking/aggbug/139122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-01-22 18:55 <a href="http://www.cppblog.com/patriking/archive/2011/01/22/139122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL 容器Deque</title><link>http://www.cppblog.com/patriking/archive/2011/01/21/139060.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Fri, 21 Jan 2011 14:25:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/01/21/139060.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/139060.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/01/21/139060.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/139060.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/139060.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;T,&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;U</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Allocator&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;allocator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;deque&nbsp;{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;typedefs:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;const_iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::pointer&nbsp;pointer;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::reference&nbsp;reference;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::const_reference&nbsp;const_reference;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;size_type;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;difference_type;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;T&nbsp;value_type;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;reverse_iterator;<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;const_reverse_iterator;<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;allocation/deallocation:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;deque();<br>&nbsp;&nbsp;&nbsp;&nbsp;deque(size_type&nbsp;n,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;T());<br>&nbsp;&nbsp;&nbsp;&nbsp;deque(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;deque</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;InputIterator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;deque(InputIterator&nbsp;first,&nbsp;InputIterator&nbsp;last);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">deque();<br>&nbsp;&nbsp;&nbsp;&nbsp;deque</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;deque</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;swap(deque</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;accessors:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;begin();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_iterator&nbsp;begin()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;end();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_iterator&nbsp;end()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reverse_iterator&nbsp;rbegin();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reverse_iterator&nbsp;rbegin();<br>&nbsp;&nbsp;&nbsp;&nbsp;reverse_iterator&nbsp;rend();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reverse_iterator&nbsp;rend();<br>&nbsp;&nbsp;&nbsp;&nbsp;size_type&nbsp;size()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;size_type&nbsp;max_size()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;empty()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reference&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">[](size_type&nbsp;n);<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reference&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">[](size_type&nbsp;n)&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reference&nbsp;front();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reference&nbsp;front()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reference&nbsp;back();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reference&nbsp;back()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;insert/erase:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;push_front(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;push_back(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;insert(iterator&nbsp;position,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;T());<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert&nbsp;(iterator&nbsp;position,&nbsp;size_type&nbsp;n,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;InputIterator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert&nbsp;(iterator&nbsp;position,&nbsp;InputIterator&nbsp;first,&nbsp;InputIterator&nbsp;last);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop_front();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop_back();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;erase(iterator&nbsp;position);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;erase(iterator&nbsp;first,&nbsp;iterator&nbsp;last);<br>};<br><br></span></div>
<br><img src ="http://www.cppblog.com/patriking/aggbug/139060.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-01-21 22:25 <a href="http://www.cppblog.com/patriking/archive/2011/01/21/139060.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL 容器List</title><link>http://www.cppblog.com/patriking/archive/2011/01/21/139059.html</link><dc:creator>哲学与程序</dc:creator><author>哲学与程序</author><pubDate>Fri, 21 Jan 2011 14:15:00 GMT</pubDate><guid>http://www.cppblog.com/patriking/archive/2011/01/21/139059.html</guid><wfw:comment>http://www.cppblog.com/patriking/comments/139059.html</wfw:comment><comments>http://www.cppblog.com/patriking/archive/2011/01/21/139059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/patriking/comments/commentRss/139059.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/patriking/services/trackbacks/139059.html</trackback:ping><description><![CDATA[<div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;T,&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;U</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Allocator&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;allocator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;list&nbsp;<br>{<br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">:<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;typedefs:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;iterator<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;const_iterator<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::pointer&nbsp;pointer<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::reference&nbsp;reference<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Allocator</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">::const_reference&nbsp;const_reference<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;size_type<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;difference_type<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;T&nbsp;value_type<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;reverse_iterator<br>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;const_reverse_iterator;<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;allocation/deallocation:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;list()<br>&nbsp;&nbsp;&nbsp;&nbsp;list(size_type&nbsp;n,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;value&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;T())<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;InputIterator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;list(InputIterator&nbsp;first,&nbsp;InputIterator&nbsp;last)<br>&nbsp;&nbsp;&nbsp;&nbsp;list(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">list()<br>&nbsp;&nbsp;&nbsp;&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">operator</span><span style="color: #000000;">=</span><span style="color: #000000;">(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x)<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;swap(list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;accessors:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;begin()<br>&nbsp;&nbsp;&nbsp;&nbsp;const_iterator&nbsp;begin()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;end()<br>&nbsp;&nbsp;&nbsp;&nbsp;const_iterator&nbsp;end()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;reverse_iterator&nbsp;rbegin()<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reverse_iterator&nbsp;rbegin();<br>&nbsp;&nbsp;&nbsp;&nbsp;reverse_iterator&nbsp;rend();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reverse_iterator&nbsp;rend();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;empty()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;size_type&nbsp;size()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;size_type&nbsp;max_size()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reference&nbsp;front();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reference&nbsp;front()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;reference&nbsp;back();<br>&nbsp;&nbsp;&nbsp;&nbsp;const_reference&nbsp;back()&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">;<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;insert/erase:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;push_front(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;push_back(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;insert(iterator&nbsp;position,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;T());<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert(iterator&nbsp;position,&nbsp;size_type&nbsp;n,&nbsp;</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;InputIterator</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;insert(iterator&nbsp;position,&nbsp;InputIterator&nbsp;first,&nbsp;InputIterator&nbsp;last);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop_front();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pop_back();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;erase(iterator&nbsp;position);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;erase(iterator&nbsp;first,&nbsp;iterator&nbsp;last);<br></span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;special&nbsp;mutative&nbsp;operations&nbsp;on&nbsp;list:</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;splice(iterator&nbsp;position,&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;splice(iterator&nbsp;position,&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x,&nbsp;iterator&nbsp;i);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;splice(iterator&nbsp;position,&nbsp;list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x,<br>&nbsp;&nbsp;&nbsp;&nbsp;iterator&nbsp;first,&nbsp;iterator&nbsp;last);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;remove(</span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;value);<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Predicate</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;remove_if(Predicate&nbsp;pred);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;unique();<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;BinaryPredicate</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;unique(BinaryPredicate&nbsp;binary_pr<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;merge(list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x);<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Compare</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;merge(list</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">T,&nbsp;Allocator</span><span style="color: #000000;">&gt;&amp;</span><span style="color: #000000;">&nbsp;x,&nbsp;Compare&nbsp;com<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;reverse();<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;sort();<br>&nbsp;&nbsp;&nbsp;&nbsp;template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Compare</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;sort(Compare&nbsp;comp);<br>};<br></span></div>
<br><img src ="http://www.cppblog.com/patriking/aggbug/139059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/patriking/" target="_blank">哲学与程序</a> 2011-01-21 22:15 <a href="http://www.cppblog.com/patriking/archive/2011/01/21/139059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>