﻿<?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++博客-EyeOfProvidence-随笔分类-算法相关</title><link>http://www.cppblog.com/EyeOfProvidence/category/12645.html</link><description>&lt;STYLE&gt;
BODY
{
    BACKGROUND-COLOR: #e0dfe3;
    MARGIN: 0px;
    FONT-FAMILY: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
    FONT-SIZE: 1.2em
}
A:visited
{
    COLOR: blue;
    TEXT-DECORATION: none
}
A:active
{
    COLOR: #3f3d3d;
    TEXT-DECORATION: none
}
A:link
{
    COLOR: red;
    TEXT-DECORATION: none
}
A:hover
{
}
H1
{
    MARGIN: 10px 0px 5px;
    FONT-SIZE: 1em
}
H1 A:visited
{
    COLOR: red
}
H1 A:active
{
    COLOR: blue
}
H1 A:link
{
    COLOR: #000
}
H1 A:hover
{
    COLOR: silver;
    TEXT-DECORATION: none
}
H2
{
    MARGIN-TOP: 10px;
    MARGIN-BOTTOM: 3px;
    FONT-SIZE: 1em
}
H3
{
    FONT-SIZE: 1.2em
}
H5
{
    PADDING-BOTTOM: 0px;
    MARGIN: 0px;
    PADDING-LEFT: 0px;
    PADDING-RIGHT: 0px;
    PADDING-TOP: 0px
}
P
{
    MARGIN: 10px 0px
}
#authors UL
{
    PADDING-BOTTOM: 0px;
    LIST-STYLE-TYPE: none;
    MARGIN: 0px 5px;
    PADDING-LEFT: 0px;
    PADDING-RIGHT: 0px;
    PADDING-TOP: 0px
}
DIV.News
{
    PADDING-BOTTOM: 5px;
    PADDING-LEFT: 10px;
    PADDING-RIGHT: 5px;
    FONT-FAMILY: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
    FONT-SIZE: 12px;
    PADDING-TOP: 5px
}
.HeaderTitle
{
    MARGIN: 0px;
    COLOR: blue;
    FONT-SIZE: 1.5em
}
.HeaderTitles
{
    PADDING-BOTTOM: 10px;
    PADDING-LEFT: 10px;
    WIDTH: 100%;
    PADDING-RIGHT: 10px;
    COLOR: blue;
    PADDING-TOP: 10px
}
.HeaderTitles A:visited
{
    COLOR: green;
    FONT-SIZE: 0.75em;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderTitles A:active
{
    COLOR: blue;
    FONT-SIZE: 0.75em;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderTitles A:link
{
    COLOR: blue;
    FONT-SIZE: 0.75em;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderTitles A:hover
{
    COLOR: blue;
    FONT-SIZE: 0.75em;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderBar
{
    BACKGROUND-IMAGE: url(images/WinXP-Silver_TabBackLeft.gif);
    BORDER-COLLAPSE: collapse;
    BACKGROUND-REPEAT: repeat-x;
    COLOR: blue;
    FONT-SIZE: 12px;
    FONT-WEIGHT: bolder
}
.HeaderBar A:visited
{
    COLOR: blue;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderBar A:active
{
    COLOR: yellow;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderBar A:link
{
    COLOR: blue;
    FONT-WEIGHT: normal;
    TEXT-DECORATION: none
}
.HeaderBarTab
{
    BACKGROUND-IMAGE: url(images/WinXP-Silver_NavBar.gif);
    PADDING-BOTTOM: 0px;
    TEXT-TRANSFORM: capitalize;
    PADDING-LEFT: 0px;
    PADDING-RIGHT: 0px;
    BORDER-COLLAPSE: collapse;
    BACKGROUND-REPEAT: repeat-x;
    COLOR: blue;
    FONT-SIZE: 14pt;
    FONT-WEIGHT: bolder;
    PADDING-TOP: 0px
}
.BlogStatsBar
{
    TEXT-ALIGN: right;
    BORDER-COLLAPSE: collapse;
    COLOR: blue;
    FONT-SIZE: 9pt;
    FONT-WEIGHT: normal
}
P.date IMG
{
    VERTICAL-ALIGN: middle
}
P.date
{
    TEXT-ALIGN: right;
    PADDING-BOTTOM: 4px;
    PADDING-RIGHT: 0px;
    MARGIN-BOTTOM: 0px;
    FONT-SIZE: 0.8em;
    FONT-WEIGHT: bold;
    PADDING-TOP: 0px
}
BLOCKQUOTE
{
    FONT-STYLE: italic
}
DIV.postTitle A:visited
{
    COLOR: blue;
    FONT-SIZE: 12pt;
    TEXT-DECORATION: none
}
DIV.postTitle A:active
{
    COLOR: mediumblue;
    FONT-SIZE: 12pt;
    TEXT-DECORATION: none
}
DIV.postTitle A:link
{
    COLOR: mediumblue;
    FONT-SIZE: 12pt;
    TEXT-DECORATION: none
}
#main
{
    BORDER-BOTTOM: #9e9eb6 2px solid;
    BORDER-LEFT: #9e9eb6 0px solid;
    PADDING-BOTTOM: 10px;
    BACKGROUND-COLOR: #e0dfe3;
    PADDING-LEFT: 10px;
    PADDING-RIGHT: 10px;
    MARGIN-LEFT: 200px;
    PADDING-TOP: 10px
}
DIV.post
{
    BORDER-BOTTOM: #9e9eb6 1px solid;
    BORDER-LEFT: #9e9eb6 1px solid;
    BORDER-TOP: #9e9eb6 1px solid;
    BORDER-RIGHT: #9e9eb6 1px solid
}
DIV.postTitle
{
    BORDER-BOTTOM: #9fb086 1px dashed;
    PADDING-BOTTOM: 3px;
    PADDING-LEFT: 3px;
    FONT-SIZE: 13px;
    FONT-WEIGHT: bolder;
    PADDING-TOP: 3px
}
DIV.postText
{
    PADDING-BOTTOM: 5px;
    BACKGROUND-COLOR: #e0dfe3;
    MARGIN-TOP: 10px;
    PADDING-LEFT: 3px;
    PADDING-RIGHT: 10px;
    MARGIN-BOTTOM: 10px;
    FONT-SIZE: 12pt;
    PADDING-TOP: 1px
}
DIV.postFoot
{
    TEXT-ALIGN: right;
    PADDING-BOTTOM: 1px;
    PADDING-LEFT: 3px;
    PADDING-RIGHT: 3px;
    COLOR: black;
    FONT-SIZE: 10pt;
    BORDER-TOP: #9fb086 1px dashed;
    PADDING-TOP: 1px
}
#top
{
    BACKGROUND-IMAGE: url(images/WinXP-Silver_HeaderBackground.gif);
    BORDER-BOTTOM: black 1px solid;
    PADDING-BOTTOM: 0px;
    MARGIN: 0px;
    PADDING-LEFT: 0px;
    PADDING-RIGHT: 0px;
    BACKGROUND-REPEAT: repeat;
    COLOR: whitesmoke;
    BORDER-TOP: black 0px solid;
    PADDING-TOP: 0px
}
#tagline
{
    MARGIN: 0px;
    COLOR: black;
    FONT-SIZE: 0.8em
}
#leftmenu
{
    BORDER-BOTTOM: #9e9eb6 1px solid;
    POSITION: absolute;
    BORDER-LEFT: #9e9eb6 1px solid;
    BACKGROUND-COLOR: #d9d8d9;
    WIDTH: 200px;
    BORDER-TOP: #9e9eb6 1px solid;
    BORDER-RIGHT: #9e9eb6 1px solid;
    PADDING-TOP: 5px;
    LEFT: 0px
}
#leftmenu H3
{
    BORDER-BOTTOM: #9e9eb6 1px solid;
    PADDING-BOTTOM: 2px;
    MARGIN: 10px 0px 0px;
    PADDING-LEFT: 3px;
    COLOR: blue;
    FONT-SIZE: 0.88em
}
#leftmenu UL
{
    LIST-STYLE-TYPE: none;
    MARGIN: 0px 0px 10px 5px;
    PADDING-LEFT: 5px;
    FONT-SIZE: 12px
}
#leftmenu A
{
    PADDING-BOTTOM: 1px;
    PADDING-LEFT: 1px;
    PADDING-RIGHT: 1px;
    COLOR: #3f3d3d;
    TEXT-DECORATION: none;
    PADDING-TOP: 1px
}
#leftmenu A:active
{
    COLOR: red
}
#leftmenu A:visited
{
    COLOR: purple
}
#leftmenu A:link
{
}
#leftmenu A:hover
{
    FONT-STYLE: normal;
    COLOR: #3f3d3d;
    FONT-WEIGHT: bold
}
#footer
{
    TEXT-ALIGN: right;
    MARGIN: 0px;
    FONT-SIZE: 0.7em;
    PADDING-TOP: 5px
}
INPUT
{
    FONT-FAMILY: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
    FONT-SIZE: 12px
}
TEXTAREA
{
    FONT-FAMILY: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
    FONT-SIZE: 12px
}
.CommentForm
{
    FONT-FAMILY: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif;
    FONT-SIZE: 12px
}
.Button
{
    BORDER-BOTTOM: steelblue 1px solid;
    BORDER-LEFT: steelblue 1px solid;
    BORDER-TOP: steelblue 1px solid;
    BORDER-RIGHT: steelblue 1px solid
}
#comments
{
    BACKGROUND-COLOR: #e0dfe3
}
&lt;/STYLE&gt;</description><language>zh-cn</language><lastBuildDate>Sun, 28 Mar 2010 20:25:40 GMT</lastBuildDate><pubDate>Sun, 28 Mar 2010 20:25:40 GMT</pubDate><ttl>60</ttl><item><title>排列字典序及相关</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2010/03/27/110669.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Sat, 27 Mar 2010 04:58:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2010/03/27/110669.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/110669.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2010/03/27/110669.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/110669.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/110669.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 昨天TopCoder上div2的1000分的题与排列的字典序比较类似，先看看那道题是怎么描述的：给你一个时间表，只给分钟，时间为00:00-23:59，给的分钟的个数不超过50个，现在要求你给每个分钟上面配上小时的时间，保证前面一个时间一定小于后面一个时间，求第K(K<10^9)个最小时间是多少（从1开始算） 或者不存在。例如给的是11，22。那么最小的那个就是00:11 00:22，第二个就是00:11 01:22。如果给的是11,11那么第一个时间就是00:11，01:11，因为第二个时间如果为00:11那么它与前一个时间相同，就不能保证前一个时间一定小于后一个时间了。&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2010/03/27/110669.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/110669.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2010-03-27 12:58 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2010/03/27/110669.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(译)最小费用流 Part 1: Key Concepts</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107372.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Sat, 06 Feb 2010 03:02:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107372.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/107372.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107372.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/107372.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/107372.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这篇文章讨论最小费用流问题，对于TC比赛选手或其它专业程序员都有许多应用。这篇文章主要面向对最小费用流不太熟悉的读者，使其对相关问题有一个全面的了解而不是重点在理论或技术细节上面。要想深入了解这个主题，你应该了解文章未尾references中的文章。事实上，阅读这篇文章的读者应该对图论的基本概念有所了解——包括最短路径，非负弧，负环和最大流的相关理论。<br>这篇文章分成三个部分。在第一部份中，我们将讨论最大流相关问题，下一部分我们将描述三个基本的算法，在第三部分我们将讨论它的应用。&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107372.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/107372.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2010-02-06 11:02 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107372.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(译)最大流</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107369.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Sat, 06 Feb 2010 02:55:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107369.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/107369.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107369.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/107369.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/107369.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 介绍<br>这篇文章适用于一类经常出现在现实生活中和程序竞赛中（topcoder也不例外）的问题。对于不熟悉此类问题的人经常需要编写大量的代码，这也间接证明了经验的重要性。己经有许多论文讨论了这个问题，同时也存在许多知名算法来解决这个问题。现在经常使用的算法尽管不是最快的，但是它们有着简单与有效（译者注：这里应该是指编码上的优势，因为程序设计竞赛的时间都是有限的）的优势而经常在程序设计竞赛中作为首选。读者在读这篇文章之前应该先阅读图论（译者注：tc上面另一篇介绍文章），因为在这里面出现的一些概念在那篇文章里面有讲解。<br><br>&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107369.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/107369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2010-02-06 10:55 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2010/02/06/107369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Hamiltonian path的状态压缩DP算法</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/10/105356.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Sun, 10 Jan 2010 12:24:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/10/105356.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/105356.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/10/105356.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/105356.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/105356.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在图论中，Hamiltonian Path是指在一个无向图中，一条路径访问且仅访问每个结点一次的路径。Hamiltonian cycle (或者 Hamiltonian circuit)是指在一个无向图中，访问且仅访问每个点一个次再回到原点的一个环。求在图上是否存在一个Hamiltonian Path或者Hamiltonian cycle的问题是NP完全的。&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2010/01/10/105356.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/105356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2010-01-10 20:24 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2010/01/10/105356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>从最大子序列和谈模型的扩展</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/03/104710.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Sun, 03 Jan 2010 09:40:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/03/104710.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/104710.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2010/01/03/104710.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/104710.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/104710.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 刚入大学的时候就听到一句话：程序=数据结构+算法。虽然现在算法在一些应用中显得并不如以前重要，但不得不说它还是很锻炼一个人的思维能力与动手能力。因为许多模型都是在基础模型上进行拓展出来的，如果能直接看到本质，那么解决起来就参得心应手。当然对结构进行分析，对问题进行归约出基本模型，对于问题的解决就有了基本的方向。&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2010/01/03/104710.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/104710.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2010-01-03 17:40 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2010/01/03/104710.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AC自动机简介</title><link>http://www.cppblog.com/EyeOfProvidence/archive/2009/12/28/104261.html</link><dc:creator>MasterLuo</dc:creator><author>MasterLuo</author><pubDate>Mon, 28 Dec 2009 03:49:00 GMT</pubDate><guid>http://www.cppblog.com/EyeOfProvidence/archive/2009/12/28/104261.html</guid><wfw:comment>http://www.cppblog.com/EyeOfProvidence/comments/104261.html</wfw:comment><comments>http://www.cppblog.com/EyeOfProvidence/archive/2009/12/28/104261.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/EyeOfProvidence/comments/commentRss/104261.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/EyeOfProvidence/services/trackbacks/104261.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在字符串匹配算法中，对于不同的应用有着许多不同的算法与数据结构。如sunday, BM, suffix-tree, suffix-array, KMP, AC automation。其中AC automation就是AC自动机，它主要应用于多串匹配中，即有模式串的集合P = {p1, p2, … ,pn}，主串T，问有多少个模式串在T串中出现。如果使用KMP算法，对于每个模式串都要进行一次匹配，理论上复杂度为O(n*|T| + |P|)(|T|为主串的长串，|P|为所有模式串的长度和。而应用AC自动机，则复杂度为O(|T| + |P|)，显然比直接应用KMP算法要好很多。&nbsp;&nbsp;<a href='http://www.cppblog.com/EyeOfProvidence/archive/2009/12/28/104261.html'>阅读全文</a><img src ="http://www.cppblog.com/EyeOfProvidence/aggbug/104261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/EyeOfProvidence/" target="_blank">MasterLuo</a> 2009-12-28 11:49 <a href="http://www.cppblog.com/EyeOfProvidence/archive/2009/12/28/104261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>