﻿<?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++博客-小乐-随笔分类-Algorithm </title><link>http://www.cppblog.com/sosi/category/15075.html</link><description>Virtual Reality </description><language>zh-cn</language><lastBuildDate>Sun, 05 Dec 2010 07:00:03 GMT</lastBuildDate><pubDate>Sun, 05 Dec 2010 07:00:03 GMT</pubDate><ttl>60</ttl><item><title>zz ACM总结。。。</title><link>http://www.cppblog.com/sosi/archive/2010/12/01/135190.html</link><dc:creator>Sosi</dc:creator><author>Sosi</author><pubDate>Wed, 01 Dec 2010 13:15:00 GMT</pubDate><guid>http://www.cppblog.com/sosi/archive/2010/12/01/135190.html</guid><wfw:comment>http://www.cppblog.com/sosi/comments/135190.html</wfw:comment><comments>http://www.cppblog.com/sosi/archive/2010/12/01/135190.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sosi/comments/commentRss/135190.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sosi/services/trackbacks/135190.html</trackback:ping><description><![CDATA[<meta http-equiv="content-type" content="text/html; charset=utf-8"><span  style="color: rgb(51, 51, 51); font-family: Tahoma, Verdana, STHeiTi, simsun, sans-serif; font-size: 14px; line-height: 21px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">看到好朋友zz的一个ACM总结，写的非常好。。暂且转载一下把。。。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">ACM比赛对于选手的要求，很简单，只有两点：算法和程序实现。<br>当然一些队友的配合以及良好的心态都是一些很隐性的因素，这里只说如何提高这两块。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">算法方面：<br>第一，要不断学习新算法，扩宽自己的知识面，不要怕难，不要怕麻烦，学习是在别人研究的基础上，如果这点做不好，也很难在更深的层次发展；<br>第二，平时着重培养自己思考问题的能力，而不是拘泥在固有的算法和题目里，拿来一道题目，要有自己的一套思维习惯，从何入手，如何分析问题，思考的轨迹要很清晰的展开，这一点，是最核心的，也是最难的；<br>第三，模板一定要用自己理解后自己写的，只是秉着一副&#8220;拿来主义&#8221;，很多自认为了解的东西也只是表层的；<br>第四，不要局限自己的思维，既有的东西虽好，但创新永远是乐趣所在。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">程序设计方面：<br>第一，养成良好的编程习惯，做好一件东西，首先要把他当做一种艺术，程序也是一种艺术，把自己的程序经营成可以欣赏的艺术；<br>第二，不要在思路不清晰的时候写程序，理好思路，这也是设计的过程；<br>第三，不必使用一些高深的语法，多用类来封装，适当的利用STL；<br>第四，写的时候着重整体，检查的时候注意细节。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">写的非常好，对自己是一种鼓励！！</p></span>
<img src ="http://www.cppblog.com/sosi/aggbug/135190.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sosi/" target="_blank">Sosi</a> 2010-12-01 21:15 <a href="http://www.cppblog.com/sosi/archive/2010/12/01/135190.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Pseudo-polynomial time 伪多项式时间算法</title><link>http://www.cppblog.com/sosi/archive/2010/11/13/133531.html</link><dc:creator>Sosi</dc:creator><author>Sosi</author><pubDate>Sat, 13 Nov 2010 08:41:00 GMT</pubDate><guid>http://www.cppblog.com/sosi/archive/2010/11/13/133531.html</guid><wfw:comment>http://www.cppblog.com/sosi/comments/133531.html</wfw:comment><comments>http://www.cppblog.com/sosi/archive/2010/11/13/133531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sosi/comments/commentRss/133531.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sosi/services/trackbacks/133531.html</trackback:ping><description><![CDATA[<p>&#160;&#160; 在计算复杂性里面，如果一个算法的时间复杂度是输入数据的多项式表达，但却是输入长度的指数时间算法，那么称其为伪多项式时间。</p>  <p>&#160;&#160;&#160; 如果一个NPC问题存在伪多项式时间算法，那么称其为Weakly NP-Complete。否则，称为Strongly NP-Complete.</p>  <p>&#160;&#160; 很明显的一个例子是0-1背包问题，这一点经常容易引起别人的误解。其实0-1背包问题是一个NPC问题，你可以简单的把它规约到子集和问题，但是有人经常争辩说0-1 kanpsack问题存在Polynomial Algorithm，那么问题就在这里，那个所谓的Polynomial Algorithm is Pseudo-Polynomial actually！</p>  <p>&#160;&#160; 一个经典0-1背包问题的DP解法的时间复杂度是O(nW)，W为背包容量，但是背包容量是否需要枚举[min(…),\sum(…)]呢？所以问题就在这里了复杂度是O(n2^n)…</p>  <p>&#160;&#160; 还有一个问题就是素性检测！这个当然也是NPC的了。。</p>  <p>&#160;&#160;&#160; In the case of primality, it turns out there is a different algorithm for <a href="http://en.wikipedia.org/wiki/AKS_primality_test">testing whether <i>n</i> is prime</a> (discovered in 2002) which runs in time <i>O</i>(log<sup>6</sup><i>n</i>).</p>  <p> 如果仍然不是很清楚，那么需要熟悉一下NPC与P类问题区别，下面是一个不错的表格。。。</p>  <p><a href="http://www.cppblog.com/images/cppblog_com/sosi/WindowsLiveWriter/Pseudopolynomialtime_E807/E7PPWP6W63CCRP07E$S@K9Q_2.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="E7PPWP6W63CCRP07E$S@K9Q" border="0" alt="E7PPWP6W63CCRP07E$S@K9Q" src="http://www.cppblog.com/images/cppblog_com/sosi/WindowsLiveWriter/Pseudopolynomialtime_E807/E7PPWP6W63CCRP07E$S@K9Q_thumb.jpg" width="547" height="540" /></a></p>  <p>&#160; 不过貌似在源blog中有一处错误。。。Linear Programming的确是P问题，但是解决这个P问题的simplex 算法却不是Polynomial的，这个需要注意！</p><img src ="http://www.cppblog.com/sosi/aggbug/133531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sosi/" target="_blank">Sosi</a> 2010-11-13 16:41 <a href="http://www.cppblog.com/sosi/archive/2010/11/13/133531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Using your Head is Permitted</title><link>http://www.cppblog.com/sosi/archive/2010/10/03/128481.html</link><dc:creator>Sosi</dc:creator><author>Sosi</author><pubDate>Sun, 03 Oct 2010 06:48:00 GMT</pubDate><guid>http://www.cppblog.com/sosi/archive/2010/10/03/128481.html</guid><wfw:comment>http://www.cppblog.com/sosi/comments/128481.html</wfw:comment><comments>http://www.cppblog.com/sosi/archive/2010/10/03/128481.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sosi/comments/commentRss/128481.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sosi/services/trackbacks/128481.html</trackback:ping><description><![CDATA[<p>&#160; 一个非常不错的网站！赞！！很有思考性的题目！</p>  <p>http://brand.site.co.il/riddles/usingyourhead.html</p><img src ="http://www.cppblog.com/sosi/aggbug/128481.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sosi/" target="_blank">Sosi</a> 2010-10-03 14:48 <a href="http://www.cppblog.com/sosi/archive/2010/10/03/128481.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>