<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>cnPhil &#187; Informatics</title>
	<atom:link href="http://www.cnphil.com/archives/category/computer-science/feed" rel="self" type="application/rss+xml" />
	<link>http://www.cnphil.com</link>
	<description>In Pursuit of Excellence</description>
	<lastBuildDate>Fri, 09 Jul 2010 06:17:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>HNOI 2010 解题报告</title>
		<link>http://www.cnphil.com/archives/270</link>
		<comments>http://www.cnphil.com/archives/270#comments</comments>
		<pubDate>Mon, 05 Jul 2010 08:29:33 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[HNOI]]></category>
		<category><![CDATA[NOI]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=270</guid>
		<description><![CDATA[由于题目的版权问题, 这里并不会出现题目描述, 请通过其他渠道获取题目描述. 合唱队 Chorus 很容易的区间DP, 设 分别表示当前状态为区间 , 最后一个放的元素在区间的左侧和右侧的方案数. 时间复杂度 . 平面图判定 Planar 判定存在 Hamilton 回路的平面图, 实际上就是判定能否把区间(边)分成两个集合, 使得每个集合内的元素互不相交(但可以严格包含). 这道题其实是有 的解法的, 但是这道题的点数过少, 也有很方便的解法. 根据欧拉定理, 平面图的边数 和点数 满足 . 那我们可以把边数的规模降低, 然后可以用 的染色解决此题. 物品调度 Fsk 假设我们已经知道了终止状态, 如何求得最小步数呢. 我们可以用 的时间求出这个置换的每个循环. 对于每个长度大于1的循环, 若其中含有0元素, 那么最少需 步, 否则需要 步. 现在的问题是如何求出终止状态, 观察题意发现, 每个元素的终止状态是放在 之后第一个非空的模 剩余系中, 并且放在这个模 剩余系中当前位置的下一个可行位置, 因此我们可以用链表/平衡树维护每个模 剩余系的情况以及每个模 剩余系内部的情况. 可以做到 的复杂度. [...]]]></description>
			<content:encoded><![CDATA[<p>由于题目的版权问题, 这里并不会出现题目描述, 请通过其他渠道获取题目描述.</p>
<h3>合唱队 Chorus</h3>
<p>很容易的区间DP, 设 <img src="http://www.cnphil.com/wp-content/cache/tex_98134f615641ebfd0bd86ca3c668d1bf.png" align="absmiddle" class="tex" alt="F_{i, j}, G_{i, j}" /> 分别表示当前状态为区间 <img src="http://www.cnphil.com/wp-content/cache/tex_3674a78404758341a58c373fc8c51e3b.png" align="absmiddle" class="tex" alt="[i, j]" />, 最后一个放的元素在区间的左侧和右侧的方案数. 时间复杂度 <img src="http://www.cnphil.com/wp-content/cache/tex_9f84a66d88d24c3b1bc91df5b5346a13.png" align="absmiddle" class="tex" alt="O(n^2)" /> .</p>
<h3>平面图判定 Planar</h3>
<p>判定存在 Hamilton 回路的平面图, 实际上就是判定能否把区间(边)分成两个集合, 使得每个集合内的元素互不相交(但可以严格包含).</p>
<p>这道题其实是有 <img src="http://www.cnphil.com/wp-content/cache/tex_d344075a2c690847a757434e9e7fa128.png" align="absmiddle" class="tex" alt="O(nlogn)" /> 的解法的, 但是这道题的点数过少, 也有很方便的解法. 根据欧拉定理, 平面图的边数 <img src="http://www.cnphil.com/wp-content/cache/tex_5a77ee935e0e92da10ac46b3e8fa3273.png" align="absmiddle" class="tex" alt="|e|" /> 和点数 <img src="http://www.cnphil.com/wp-content/cache/tex_7b6d1dcc41e92c04a62cda4a1c98837c.png" align="absmiddle" class="tex" alt="|v|" /> 满足 <img src="http://www.cnphil.com/wp-content/cache/tex_6339930bf3daa952909b37a4a7a61fd1.png" align="absmiddle" class="tex" alt="|e| \leq 3|v| - 6" />. 那我们可以把边数的规模降低, 然后可以用 <img src="http://www.cnphil.com/wp-content/cache/tex_9f84a66d88d24c3b1bc91df5b5346a13.png" align="absmiddle" class="tex" alt="O(n^2)" /> 的染色解决此题.</p>
<h3>物品调度 Fsk</h3>
<p>假设我们已经知道了终止状态, 如何求得最小步数呢. 我们可以用 <img src="http://www.cnphil.com/wp-content/cache/tex_7ba55e7c64a9405a0b39a1107e90ca94.png" align="absmiddle" class="tex" alt="O(n)" /> 的时间求出这个置换的每个循环. 对于每个长度大于1的循环, 若其中含有0元素, 那么最少需 <img src="http://www.cnphil.com/wp-content/cache/tex_67859e2bac0f41b9f4817fdbce559333.png" align="absmiddle" class="tex" alt="length - 1" /> 步, 否则需要 <img src="http://www.cnphil.com/wp-content/cache/tex_be333cd642b4c852dd922ae96ecd80c7.png" align="absmiddle" class="tex" alt="length + 1" /> 步.</p>
<p>现在的问题是如何求出终止状态, 观察题意发现, 每个元素的终止状态是放在 <img src="http://www.cnphil.com/wp-content/cache/tex_550e68a03e5684a67a35c39c57808c84.png" align="absmiddle" class="tex" alt=" C_i~mod~gcd(n, d)" /> 之后第一个非空的模 <img src="http://www.cnphil.com/wp-content/cache/tex_686c584776b1babbd63d1191ef94723d.png" align="absmiddle" class="tex" alt="gcd(n, d)" /> 剩余系中, 并且放在这个模 <img src="http://www.cnphil.com/wp-content/cache/tex_686c584776b1babbd63d1191ef94723d.png" align="absmiddle" class="tex" alt="gcd(n, d)" /> 剩余系中当前位置的下一个可行位置, 因此我们可以用链表/平衡树维护每个模 <img src="http://www.cnphil.com/wp-content/cache/tex_686c584776b1babbd63d1191ef94723d.png" align="absmiddle" class="tex" alt="gcd(n, d)" /> 剩余系的情况以及每个模 <img src="http://www.cnphil.com/wp-content/cache/tex_686c584776b1babbd63d1191ef94723d.png" align="absmiddle" class="tex" alt="gcd(n, d)" /> 剩余系内部的情况. 可以做到 <img src="http://www.cnphil.com/wp-content/cache/tex_38f1579266c3a62f192f91449e149fba.png" align="absmiddle" class="tex" alt="O(n) " /> 的复杂度.</p>
<h3>公交线路 Bus</h3>
<p>我们可以用每辆车到一个点的距离集合来表示一个状态, 由于不能有空位以及车之间没有区别, 实际状态集合的最多只有 <img src="http://www.cnphil.com/wp-content/cache/tex_69fe3a935642bb20591053f85c28932a.png" align="absmiddle" class="tex" alt="C(9, 5) = 126 " /> 个之少.</p>
<p>我们可以用矩阵乘法来优化转移, 复杂度最多为 <img src="http://www.cnphil.com/wp-content/cache/tex_9a85dade61634d3c47e8f6cef75a9eb3.png" align="absmiddle" class="tex" alt="O(126^3 * logn)" />.</p>
<h3>取石子游戏 Stone</h3>
<p>解法未知.</p>
<h3>城市建设 City</h3>
<p>解法未知.</p>
<h3>弹飞绵羊 Bounce</h3>
<p>首先这道题只能往后跳, 所以我们用块状链表维护每个点在块内和块外的情况即可用<img src="http://www.cnphil.com/wp-content/cache/tex_c07a405260ac28c5c9d6897b8561f9fb.png" align="absmiddle" class="tex" alt="O(n\sqrt{n})" /> 的时间解决此题.</p>
<p>正解之一是利用括号序列, 每次操作都是把一棵子树砍下并且接在某个结点上, 那么我们可以维护括号序列整段移动来完成这个操作. 同时为了回答询问我们需要知道每个左括号的左边有几个未匹配的左括号, Splay 可以维护这个值, 时间复杂度 <img src="http://www.cnphil.com/wp-content/cache/tex_d344075a2c690847a757434e9e7fa128.png" align="absmiddle" class="tex" alt="O(nlogn)" />.</p>
<h3>矩阵 Matrix</h3>
<p>设给定的矩阵是 <img src="http://www.cnphil.com/wp-content/cache/tex_9d5ed678fe57bcca610140957afab571.png" align="absmiddle" class="tex" alt="B" />, 原矩阵是 <img src="http://www.cnphil.com/wp-content/cache/tex_7fc56270e7a70fa81a5935b72eacbe29.png" align="absmiddle" class="tex" alt="A" />, 另设 <img src="http://www.cnphil.com/wp-content/cache/tex_0d61f8370cad1d412f80b84d143e1257.png" align="absmiddle" class="tex" alt="C" /> 矩阵, 其中:</p>
<p><img src="http://www.cnphil.com/wp-content/cache/tex_0d61f8370cad1d412f80b84d143e1257.png" align="absmiddle" class="tex" alt="C" /> 的第一行和第一列均是0, 且 <img src="http://www.cnphil.com/wp-content/cache/tex_c5363ec386e47df40f98f6f073578270.png" align="absmiddle" class="tex" alt="C_{i, j}=B_{i, j} - C_{i - 1, j} - C_{i, j - 1} - C_{i - 1, j - 1}" />.</p>
<p>同时满足 <img src="http://www.cnphil.com/wp-content/cache/tex_69979c45bc7f3b250d1c96209538812a.png" align="absmiddle" class="tex" alt=" A_{i, j} = C_{i, j} + (-1) ^ {i - 1} A_{1, j} + (-1) ^ {j - 1} A_{i, 1} + (-1) ^ {i + j - 1} A_{1, 1}" />. 证明在<a href="http://hi.baidu.com/winterlegend/blog/item/405177946be530017af48064.html">此</a>(外链打开请谨慎).</p>
<p>那么我们搜索 <img src="http://www.cnphil.com/wp-content/cache/tex_7fc56270e7a70fa81a5935b72eacbe29.png" align="absmiddle" class="tex" alt="A" /> 的第一行, 在枚举 <img src="http://www.cnphil.com/wp-content/cache/tex_b25ae89ecf5f3c6af6cdce9e4ddad000.png" align="absmiddle" class="tex" alt="A_{1, j}" /> 时检查第 <img src="http://www.cnphil.com/wp-content/cache/tex_363b122c528f54df4a0446b6bab05515.png" align="absmiddle" class="tex" alt="j" /> 列并更新第一列的可行集合来剪枝. 这样就可以通过这道题了.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270&amp;title=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;annotation=%E7%94%B1%E4%BA%8E%E9%A2%98%E7%9B%AE%E7%9A%84%E7%89%88%E6%9D%83%E9%97%AE%E9%A2%98%2C%20%E8%BF%99%E9%87%8C%E5%B9%B6%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%A2%98%E7%9B%AE%E6%8F%8F%E8%BF%B0%2C%20%E8%AF%B7%E9%80%9A%E8%BF%87%E5%85%B6%E4%BB%96%E6%B8%A0%E9%81%93%E8%8E%B7%E5%8F%96%E9%A2%98%E7%9B%AE%E6%8F%8F%E8%BF%B0.%0D%0A%E5%90%88%E5%94%B1%E9%98%9F%20Chorus%0D%0A%E5%BE%88%E5%AE%B9%E6%98%93%E7%9A%84%E5%8C%BA%E9%97%B4DP%2C%20%E8%AE%BE%20%24%24F_%7Bi%2C%20j%7D%2C%20G_%7Bi%2C%20j%7D%24%24%20%E5%88%86%E5%88%AB%E8%A1%A8%E7%A4%BA%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81%E4%B8%BA%E5%8C%BA%E9%97%B4%20%24%24%5Bi%2C%20j%5D%24%24%2C%20%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E6%94%BE%E7%9A%84%E5%85%83%E7%B4%A0%E5%9C%A8%E5%8C%BA%E9" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270&amp;title=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;notes=%E7%94%B1%E4%BA%8E%E9%A2%98%E7%9B%AE%E7%9A%84%E7%89%88%E6%9D%83%E9%97%AE%E9%A2%98%2C%20%E8%BF%99%E9%87%8C%E5%B9%B6%E4%B8%8D%E4%BC%9A%E5%87%BA%E7%8E%B0%E9%A2%98%E7%9B%AE%E6%8F%8F%E8%BF%B0%2C%20%E8%AF%B7%E9%80%9A%E8%BF%87%E5%85%B6%E4%BB%96%E6%B8%A0%E9%81%93%E8%8E%B7%E5%8F%96%E9%A2%98%E7%9B%AE%E6%8F%8F%E8%BF%B0.%0D%0A%E5%90%88%E5%94%B1%E9%98%9F%20Chorus%0D%0A%E5%BE%88%E5%AE%B9%E6%98%93%E7%9A%84%E5%8C%BA%E9%97%B4DP%2C%20%E8%AE%BE%20%24%24F_%7Bi%2C%20j%7D%2C%20G_%7Bi%2C%20j%7D%24%24%20%E5%88%86%E5%88%AB%E8%A1%A8%E7%A4%BA%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81%E4%B8%BA%E5%8C%BA%E9%97%B4%20%24%24%5Bi%2C%20j%5D%24%24%2C%20%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E6%94%BE%E7%9A%84%E5%85%83%E7%B4%A0%E5%9C%A8%E5%8C%BA%E9" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270&amp;t=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F270&title=HNOI%202010%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://www.cnphil.com/archives/177" title="NOIp 2009 解题报告">NOIp 2009 解题报告</a></li><li><a href="http://www.cnphil.com/archives/73" title="NOI 2009 冬令营 · 笔记 (二)">NOI 2009 冬令营 · 笔记 (二)</a></li><li><a href="http://www.cnphil.com/archives/70" title="NOI 2009 冬令营 · 笔记 (一)">NOI 2009 冬令营 · 笔记 (一)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/270/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>做数学与做学问</title>
		<link>http://www.cnphil.com/archives/186</link>
		<comments>http://www.cnphil.com/archives/186#comments</comments>
		<pubDate>Sun, 10 Jan 2010 06:43:40 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[Trivia]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=186</guid>
		<description><![CDATA[看到Terence 老师在他的博客上写过一篇文章, “Does one have to be a genius to do maths”, Zhiqiang 老师评论说“他写这种文章是站着说话不腰疼.” 的确, 对于Terence老师这种12岁就获得国际数奥金牌的人来说, 天赋毫无疑问是他走向成功的一个因素. 但是, Terence老师下面这段话却发人深省: In some cases, an abundance of raw talent may end up (somewhat perversely) to actually be harmful for one’s long-term mathematical development; if solutions to problems come too easily, for instance, one may not put as [...]]]></description>
			<content:encoded><![CDATA[<p>看到<a href="http://zh.wikipedia.org/wiki/%E9%99%B6%E5%93%B2%E8%BD%A9">Terence 老师</a>在他的博客上写过一篇文章, “<a title="Terence" href="http://terrytao.wordpress.com/career-advice/does-one-have-to-be-a-genius-to-do-maths/">Does one have to be a genius to do maths</a>”, Zhiqiang 老师评论说“他写这种文章是站着说话不腰疼.”</p>
<p>的确, 对于Terence老师这种12岁就获得国际数奥金牌的人来说, 天赋毫无疑问是他走向成功的一个因素. 但是, Terence老师下面这段话却发人深省:</p>
<blockquote><p>In some cases, an abundance of raw talent may end up (somewhat perversely) to actually be <em>harmful</em> for one’s long-term mathematical development; if solutions to problems come too easily, for instance, one may not put as much energy into <a href="http://terrytao.wordpress.com/career-advice/work-hard/">working hard</a>, <a href="http://terrytao.wordpress.com/career-advice/ask-yourself-dumb-questions-%E2%80%93-and-answer-them/">asking dumb questions</a>, or <a href="http://terrytao.wordpress.com/career-advice/continually-aim-just-beyond-your-current-range/">increasing one’s range</a>, and thus may eventually cause one’s skills to stagnate.  Also, if one is accustomed to easy success, one may not develop the <a href="http://terrytao.wordpress.com/career-advice/be-patient/">patience</a> necessary to deal with truly difficult problems. Talent is important, of course; but how one develops and nurtures it is even more so.</p></blockquote>
<p>对应的译文: (来自<a href="http://liuxiaochuan.wordpress.com/2008/03/30/%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%80%E5%AE%9A%E8%A6%81%E6%98%AF%E5%A4%A9%E6%89%8D%E5%90%97%EF%BC%9F-%EF%BC%88%E8%AF%91%E8%87%AA-%E9%99%B6%E5%93%B2%E8%BD%A9-%E5%8D%9A%E5%AE%A2%EF%BC%89/">LiuXiaochuan老师</a>)</p>
<blockquote><p>有的时候，大量的灵感和才智反而对长期的数学发展有害，试想如果在早期问题解决的太容易，一个人可能就不会刻苦努力，不会问一些“傻”的问题，不会尝试去扩展自己的领域，这样迟早造成灵感的枯竭。而且，如果一个人习惯了不大费时费力的小聪明，他就不能拥有解决真正困难的大问题所需要耐心，和坚韧的性格。聪明才智自然重要，但是如何发展和培养显然更加的重要。</p></blockquote>
<p>反过来想自己, 即使在创新能力要求极强的信息学中, 原来最重要的不是自己的那些灵光一闪的新点子, 而是严谨踏实的学术作风.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186&amp;title=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE&amp;annotation=%E7%9C%8B%E5%88%B0Terence%20%E8%80%81%E5%B8%88%E5%9C%A8%E4%BB%96%E7%9A%84%E5%8D%9A%E5%AE%A2%E4%B8%8A%E5%86%99%E8%BF%87%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%2C%20%E2%80%9CDoes%20one%20have%20to%20be%20a%20genius%20to%20do%20maths%E2%80%9D%2C%20Zhiqiang%20%E8%80%81%E5%B8%88%E8%AF%84%E8%AE%BA%E8%AF%B4%E2%80%9C%E4%BB%96%E5%86%99%E8%BF%99%E7%A7%8D%E6%96%87%E7%AB%A0%E6%98%AF%E7%AB%99%E7%9D%80%E8%AF%B4%E8%AF%9D%E4%B8%8D%E8%85%B0%E7%96%BC.%E2%80%9D%0D%0A%0D%0A%E7%9A%84%E7%A1%AE%2C%20%E5%AF%B9%E4%BA%8ETerence%E8%80%81%E5%B8%88%E8%BF%99%E7%A7%8D12%E5%B2%81%E5%B0%B1%E8%8E%B7%E5%BE%97%E5%9B%BD%E9%99%85%E6%95%B0%E5%A5%A5%E9%87%91%E7%89%8C%E7%9A" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186&amp;title=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE&amp;notes=%E7%9C%8B%E5%88%B0Terence%20%E8%80%81%E5%B8%88%E5%9C%A8%E4%BB%96%E7%9A%84%E5%8D%9A%E5%AE%A2%E4%B8%8A%E5%86%99%E8%BF%87%E4%B8%80%E7%AF%87%E6%96%87%E7%AB%A0%2C%20%E2%80%9CDoes%20one%20have%20to%20be%20a%20genius%20to%20do%20maths%E2%80%9D%2C%20Zhiqiang%20%E8%80%81%E5%B8%88%E8%AF%84%E8%AE%BA%E8%AF%B4%E2%80%9C%E4%BB%96%E5%86%99%E8%BF%99%E7%A7%8D%E6%96%87%E7%AB%A0%E6%98%AF%E7%AB%99%E7%9D%80%E8%AF%B4%E8%AF%9D%E4%B8%8D%E8%85%B0%E7%96%BC.%E2%80%9D%0D%0A%0D%0A%E7%9A%84%E7%A1%AE%2C%20%E5%AF%B9%E4%BA%8ETerence%E8%80%81%E5%B8%88%E8%BF%99%E7%A7%8D12%E5%B2%81%E5%B0%B1%E8%8E%B7%E5%BE%97%E5%9B%BD%E9%99%85%E6%95%B0%E5%A5%A5%E9%87%91%E7%89%8C%E7%9A" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186&amp;t=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F186&title=%E5%81%9A%E6%95%B0%E5%AD%A6%E4%B8%8E%E5%81%9A%E5%AD%A6%E9%97%AE" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/186/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NOIp 2009 解题报告</title>
		<link>http://www.cnphil.com/archives/177</link>
		<comments>http://www.cnphil.com/archives/177#comments</comments>
		<pubDate>Thu, 26 Nov 2009 13:34:09 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[NOI]]></category>
		<category><![CDATA[NOIp]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=177</guid>
		<description><![CDATA[以下是我的NOIp 2009 (提高组) 解题报告. 第一题(潜伏者, spy): 略. 第二题(Hankson 的趣味题, son): Gcd(x,a0)=a1, Gcd(x,b0)=xb0/b1 设f(a,b) 代表b这个质因子在a中有多少个. 对于a0的任意质因子t, 若f(a0,t)=f(a1,t) 则只需保证f(x,t)≥f(a1,t), 否则f(x,t)=f(a1,t) 对于b1的任意质因子t, 若f(b1,t)=f(b0,t) 则只需保证0≤f(x,t)≤f(b1,t), 否则f(x,t)=f(b1,t) 由于x的所有因子都是b1的子集, 所以我们只需对b1的质因子按如上方法逐个检查这个质因子在x里面的取值范围(若为空则说明无解), 并按照乘法原理统计即可. 关于分解质因子: 由于b1不会超过2*10^9, 大于50000的质因子不会超过1个, 所以我们只要打出50000以内的素数表即可, 若最后除剩的b1仍未除尽, 说明此时b1一定是一个大于50000的素数. 第三题(最优贸易, trade): 做法1: 设Low[i]为从1到i当前所有路径中最便宜的价格. Profit[i]为从1到i当前所有路径中最大获利. 初始时Low[1]=P[1], Low[2..n]=infinity, Profit[1..n]=0. 那么我们可以从1开始广搜, 要注意一个点有可能多次被更新. 从i可以更新到j的条件是: 1. 存在有向/无向边(i,j) 2. Low[j]&#62;Low[i] 或 Profit[j]&#60;Profit[i] 做法2: 首先考虑没有环的情况, 此时1,n之间要么无法连通, 要么只存在一些单向的无环路径. 对于每一条路径, 由于不能”回头”, 走到某个点i的极优获利显然是i的费用-路径上此点之前的点的最小费用, [...]]]></description>
			<content:encoded><![CDATA[<p>以下是我的NOIp 2009 (提高组) 解题报告.</p>
<p><strong>第一题(</strong><strong>潜伏者, spy)</strong>: 略.</p>
<p><strong>第二题(Hankson </strong><strong>的趣味题, son): </strong></p>
<p>Gcd(x,a0)=a1, Gcd(x,b0)=xb0/b1</p>
<p>设f(a,b) 代表b这个质因子在a中有多少个.</p>
<p>对于a0的任意质因子t, 若f(a0,t)=f(a1,t) 则只需保证f(x,t)≥f(a1,t), 否则f(x,t)=f(a1,t)</p>
<p>对于b1的任意质因子t, 若f(b1,t)=f(b0,t) 则只需保证0≤f(x,t)≤f(b1,t), 否则f(x,t)=f(b1,t)</p>
<p>由于x的所有因子都是b1的子集, 所以我们只需对b1的质因子按如上方法逐个检查这个质因子在x里面的取值范围(若为空则说明无解), 并按照乘法原理统计即可.</p>
<p>关于分解质因子: 由于b1不会超过2*10^9, 大于50000的质因子不会超过1个, 所以我们只要打出50000以内的素数表即可, 若最后除剩的b1仍未除尽, 说明此时b1一定是一个大于50000的素数.</p>
<p><strong>第三题(</strong><strong>最优贸易, trade)</strong>:</p>
<p>做法1:</p>
<p>设Low[i]为从1到i当前所有路径中最便宜的价格. Profit[i]为从1到i当前所有路径中最大获利. 初始时Low[1]=P[1], Low[2..n]=infinity, Profit[1..n]=0.</p>
<p>那么我们可以从1开始广搜, 要注意一个点有可能多次被更新.</p>
<p>从i可以更新到j的条件是:</p>
<p>1. 存在有向/无向边(i,j)</p>
<p>2. Low[j]&gt;Low[i] 或 Profit[j]&lt;Profit[i]</p>
<p>做法2:</p>
<p>首先考虑没有环的情况, 此时1,n之间要么无法连通, 要么只存在一些单向的无环路径. 对于每一条路径, 由于不能”回头”, 走到某个点i的极优获利显然是i的费用-路径上此点之前的点的最小费用, 而此路径的最大获利便是取获利最大的点.</p>
<p>但是还有很多数据是有环的, 也就是对于有些点对(a,b), 在a走到b之后, b仍然可以走回到a. 在图论中, 我们把点集V, 其中任意两个点可以互达, 叫做强连通分量.</p>
<p>由于强连通分量中的点可以互相到达, 所以在一个强连通中的最大获利就是强连通中最贵的-最便宜的. 我们把所有强连通分量求出来缩为两个点之后. 1与n之间只存在一些无环路径, 对于这些单向的无环路径我们只需要扫描一遍便可求出最大获利.</p>
<p>强连通缩为两个点的具体做法: 把一个强连通缩为a,b 两个点, 连(a,b)边, a的费用为强连通中最便宜的, b的费用为强连通中最贵的. 把指向强连通中任何一个点的所有边改为指向a, 把强连通中任何一点指向强连通外部的边改为由b指出. 这样构出来的保证与原图等价.</p>
<p><strong>第四题(</strong><strong>靶形数独, sudoku)</strong>: 很直白的搜索, 由于数独是NP-H问题, 所以我们肯定只能用搜索, 那么关键就在于剪枝了, 我们发现, 对于每个格子都有一个取值范围, 这个范围由其横行/纵行/小九宫格中已填的数决定, 那么无疑我们每次搜索选取值范围最小的格子搜是比较优的.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177&amp;title=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;annotation=%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E7%9A%84NOIp%202009%20%28%E6%8F%90%E9%AB%98%E7%BB%84%29%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A.%0D%0A%0D%0A%E7%AC%AC%E4%B8%80%E9%A2%98%28%E6%BD%9C%E4%BC%8F%E8%80%85%2C%20spy%29%3A%20%E7%95%A5.%0D%0A%0D%0A%E7%AC%AC%E4%BA%8C%E9%A2%98%28Hankson%20%E7%9A%84%E8%B6%A3%E5%91%B3%E9%A2%98%2C%20son%29%3A%20%0D%0A%0D%0AGcd%28x%2Ca0%29%3Da1%2C%20Gcd%28x%2Cb0%29%3Dxb0%2Fb1%0D%0A%0D%0A%E8%AE%BEf%28a%2Cb%29%20%E4%BB%A3%E8%A1%A8b%E8%BF%99%E4%B8%AA%E8%B4%A8%E5%9B%A0%E5%AD%90%E5%9C%A8a%E4%B8%AD%E6%9C%89%E5%A4%9A%E5%B0%91%E4%B8%AA.%0D%0A%0D%0A%E5%AF%B9%E4%BA%8Ea0%E7%9A%84%E4%BB%BB%E6%84%8F%E8%B4%A8%E5%9B%A0%E5%AD%90t%2C%20" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177&amp;title=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;notes=%E4%BB%A5%E4%B8%8B%E6%98%AF%E6%88%91%E7%9A%84NOIp%202009%20%28%E6%8F%90%E9%AB%98%E7%BB%84%29%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A.%0D%0A%0D%0A%E7%AC%AC%E4%B8%80%E9%A2%98%28%E6%BD%9C%E4%BC%8F%E8%80%85%2C%20spy%29%3A%20%E7%95%A5.%0D%0A%0D%0A%E7%AC%AC%E4%BA%8C%E9%A2%98%28Hankson%20%E7%9A%84%E8%B6%A3%E5%91%B3%E9%A2%98%2C%20son%29%3A%20%0D%0A%0D%0AGcd%28x%2Ca0%29%3Da1%2C%20Gcd%28x%2Cb0%29%3Dxb0%2Fb1%0D%0A%0D%0A%E8%AE%BEf%28a%2Cb%29%20%E4%BB%A3%E8%A1%A8b%E8%BF%99%E4%B8%AA%E8%B4%A8%E5%9B%A0%E5%AD%90%E5%9C%A8a%E4%B8%AD%E6%9C%89%E5%A4%9A%E5%B0%91%E4%B8%AA.%0D%0A%0D%0A%E5%AF%B9%E4%BA%8Ea0%E7%9A%84%E4%BB%BB%E6%84%8F%E8%B4%A8%E5%9B%A0%E5%AD%90t%2C%20" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177&amp;t=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F177&title=NOIp%202009%20%E8%A7%A3%E9%A2%98%E6%8A%A5%E5%91%8A" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://www.cnphil.com/archives/270" title="HNOI 2010 解题报告">HNOI 2010 解题报告</a></li><li><a href="http://www.cnphil.com/archives/78" title="CCF 是对的 &mdash; 一个信息学竞赛选手的自白">CCF 是对的 &mdash; 一个信息学竞赛选手的自白</a></li><li><a href="http://www.cnphil.com/archives/73" title="NOI 2009 冬令营 · 笔记 (二)">NOI 2009 冬令营 · 笔记 (二)</a></li><li><a href="http://www.cnphil.com/archives/70" title="NOI 2009 冬令营 · 笔记 (一)">NOI 2009 冬令营 · 笔记 (一)</a></li><li><a href="http://www.cnphil.com/archives/48" title="长郡NOIp2008停课集训试题解题报告&#038;测试数据 &#8211; 10月28日">长郡NOIp2008停课集训试题解题报告&#038;测试数据 &#8211; 10月28日</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/177/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Nim 取石子游戏的一些变种</title>
		<link>http://www.cnphil.com/archives/169</link>
		<comments>http://www.cnphil.com/archives/169#comments</comments>
		<pubDate>Thu, 19 Nov 2009 16:55:50 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Brainstorm]]></category>
		<category><![CDATA[Informatics]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=169</guid>
		<description><![CDATA[大家都知道正常的Nim游戏是取完最后一个赢. 必胜态是各堆石子异或值不为0. 现在来看看几个有意思的变种. 变种1: 取到最后一个石子的人输. 首先明确奇数个1是必败态, 偶数个1是必胜态. 这与正常的Nim不一致. 若只有一堆的个数大于1, 那么现在可以控制全场的1个数的奇偶性, 所以是必胜的. 这与正常的Nim一致. 若不止一堆的个数大于1, 由于不能转移到全是1的状态, (可能可以转移到仅有一堆大于1的状态, 但此状态与正常Nim一致), 所有当前可以转移到的状态的胜负性都是与正常的Nim一致的, 所以当前状态的胜负性与正常的Nim也是一致的. 综上, 除了全是1的状态胜负性跟正常的Nim不一致, 其余的状态胜负性与正常的Nim一致. 变种2: 只能从最左或最右的一堆中取, 取到最后一个的赢. 对于 [L,X,R] 状态, 若其是必败状态, 那么&#124;L-R&#124;&#60;=1. 证明: 设[L,X,R]是必败态且R&#60;L-1, 那么, 对于任何的1&#60;=L&#8217;&#60;L, [L',X,R]是必胜态. 那么对于每个L&#8217;, 都存在R&#8217;&#60;R使得[L',X,R']是必败态, 显然不会出现[a,X,b]和[a',X,b]同为必败态的情况, 但L&#8217;有L-1个取值, R&#8217;却没有L-1个取值, 所以对于任意必败态[L,X,R], 都有&#124;L-R&#124;1则是必胜态, 否则, 由[X]的胜负性以及L-R的值可以推导出[L,X,R]的胜负性. Share and Enjoy: Related PostsNo Related Posts]]></description>
			<content:encoded><![CDATA[<p>大家都知道正常的Nim游戏是取完最后一个赢. 必胜态是各堆石子异或值不为0. 现在来看看几个有意思的变种.</p>
<p>变种1: 取到最后一个石子的人输.<br />
首先明确奇数个1是必败态, 偶数个1是必胜态. 这与正常的Nim不一致.<br />
若只有一堆的个数大于1, 那么现在可以控制全场的1个数的奇偶性, 所以是必胜的. 这与正常的Nim一致.<br />
若不止一堆的个数大于1, 由于不能转移到全是1的状态, (可能可以转移到仅有一堆大于1的状态, 但此状态与正常Nim一致), 所有当前可以转移到的状态的胜负性都是与正常的Nim一致的, 所以当前状态的胜负性与正常的Nim也是一致的.<br />
综上, 除了全是1的状态胜负性跟正常的Nim不一致, 其余的状态胜负性与正常的Nim一致.</p>
<p>变种2: 只能从最左或最右的一堆中取, 取到最后一个的赢.<br />
对于 [L,X,R] 状态, 若其是必败状态, 那么|L-R|&lt;=1.<br />
证明: 设[L,X,R]是必败态且R&lt;L-1, 那么, 对于任何的1&lt;=L&#8217;&lt;L, [L',X,R]是必胜态. 那么对于每个L&#8217;, 都存在R&#8217;&lt;R使得[L',X,R']是必败态, 显然不会出现[a,X,b]和[a',X,b]同为必败态的情况, 但L&#8217;有L-1个取值, R&#8217;却没有L-1个取值, 所以对于任意必败态[L,X,R], 都有|L-R|1则是必胜态, 否则, 由[X]的胜负性以及L-R的值可以推导出[L,X,R]的胜负性.</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169&amp;title=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D&amp;annotation=%E5%A4%A7%E5%AE%B6%E9%83%BD%E7%9F%A5%E9%81%93%E6%AD%A3%E5%B8%B8%E7%9A%84Nim%E6%B8%B8%E6%88%8F%E6%98%AF%E5%8F%96%E5%AE%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E8%B5%A2.%20%E5%BF%85%E8%83%9C%E6%80%81%E6%98%AF%E5%90%84%E5%A0%86%E7%9F%B3%E5%AD%90%E5%BC%82%E6%88%96%E5%80%BC%E4%B8%8D%E4%B8%BA0.%20%E7%8E%B0%E5%9C%A8%E6%9D%A5%E7%9C%8B%E7%9C%8B%E5%87%A0%E4%B8%AA%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E5%8F%98%E7%A7%8D.%0D%0A%0D%0A%E5%8F%98%E7%A7%8D1%3A%20%E5%8F%96%E5%88%B0%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E7%9F%B3%E5%AD%90%E7%9A%84%E4%BA%BA%E8%BE%93.%0D%0A%E9%A6%96%E5%85%88%E6%98%8E%E7%A1%AE%E5%A5%87%E6%95%B0%E4%B8%AA1%E6%98%AF%E5%BF%85%E8%B4%A5%E6%80%81%2C%20%E5%81%B6%E6%95%B0%E4%B8%AA1%E6%98%AF%E5%BF%85%E8%83%9C%E6%80%81.%20" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169&amp;title=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D&amp;notes=%E5%A4%A7%E5%AE%B6%E9%83%BD%E7%9F%A5%E9%81%93%E6%AD%A3%E5%B8%B8%E7%9A%84Nim%E6%B8%B8%E6%88%8F%E6%98%AF%E5%8F%96%E5%AE%8C%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E8%B5%A2.%20%E5%BF%85%E8%83%9C%E6%80%81%E6%98%AF%E5%90%84%E5%A0%86%E7%9F%B3%E5%AD%90%E5%BC%82%E6%88%96%E5%80%BC%E4%B8%8D%E4%B8%BA0.%20%E7%8E%B0%E5%9C%A8%E6%9D%A5%E7%9C%8B%E7%9C%8B%E5%87%A0%E4%B8%AA%E6%9C%89%E6%84%8F%E6%80%9D%E7%9A%84%E5%8F%98%E7%A7%8D.%0D%0A%0D%0A%E5%8F%98%E7%A7%8D1%3A%20%E5%8F%96%E5%88%B0%E6%9C%80%E5%90%8E%E4%B8%80%E4%B8%AA%E7%9F%B3%E5%AD%90%E7%9A%84%E4%BA%BA%E8%BE%93.%0D%0A%E9%A6%96%E5%85%88%E6%98%8E%E7%A1%AE%E5%A5%87%E6%95%B0%E4%B8%AA1%E6%98%AF%E5%BF%85%E8%B4%A5%E6%80%81%2C%20%E5%81%B6%E6%95%B0%E4%B8%AA1%E6%98%AF%E5%BF%85%E8%83%9C%E6%80%81.%20" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169&amp;t=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F169&title=Nim%20%E5%8F%96%E7%9F%B3%E5%AD%90%E6%B8%B8%E6%88%8F%E7%9A%84%E4%B8%80%E4%BA%9B%E5%8F%98%E7%A7%8D" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>公开密钥的加密法: RSA加密算法</title>
		<link>http://www.cnphil.com/archives/138</link>
		<comments>http://www.cnphil.com/archives/138#comments</comments>
		<pubDate>Thu, 23 Jul 2009 09:17:00 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Primes]]></category>
		<category><![CDATA[RSA]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=138</guid>
		<description><![CDATA[假如Alice和Bob需要经过一个不可靠媒介传送一条消息, 他们大概会把这条消息加密, 而普遍使用的字母移位法(凯撒加密法)太容易被破解, 所以他们可能会考虑使用更加安全的加密法. 在上个世纪70年代被麻省理工学院的三位教授发明的RSA加密算法就是一个足够安全的加密法, 当今互联网的SSL安全连接协议的重要加密算法就包括了RSA加密算法. 连接到你的网上银行, 查看这个安全连接的证书, 证书上很可能写的就是“RSA加密”. 当然, RSA被广泛使用的原因还有一个, 那就是它的加密钥匙是公开的, 也就是说, 任何人都可以使用公开的密钥给消息加密, 却无法给刚加密的消息解密. 现在, 若Alice需要接收一条来自Bob的消息, 她可以这样来生成密钥: 随机选取两个不相等的较大素数p和q, 计算N=pq. 根据欧拉函数, 计算不大于N且与N互质的正整数个数 φ(N) = (p-1)(q-1). 选取小于φ(N)且与φ(N)互质的正整数e. 选取小于φ(N)的正整数d, 使得e和d满足 (d×e) Mod φ(N)=1. 将公钥N和e公开, 保存好私钥d, 销毁p和q的记录. 关于私钥d的计算, 在实际应用中经常通过对e做模逆运算来得到d, 而高效解模逆运算的算法就是扩展Euclid算法. 此时, Bob已经知道了公钥N和e, 对于他要发送的消息n (n&#60;N), 他可以计算出把n加密后的消息c=ne Mod N. Bob此时可以放心地把c发送给Alice了. 对于Alice收到的加密消息c, 她可以解密出原消息n=cd Mod N. 这样解密的原理是: 因为 c≡ne (Mod N), 所以 [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">假如</span>Alice<span style="font-family: DejaVu Sans;">和</span>Bob<span style="font-family: DejaVu Sans;">需要经过一个不可靠媒介传送一条消息</span>, <span style="font-family: DejaVu Sans;">他们大概会把这条消息加密</span>, <span style="font-family: DejaVu Sans;">而普遍使用的字母移位法</span>(<span style="font-family: DejaVu Sans;">凯撒加密法</span>)<span style="font-family: DejaVu Sans;">太容易被破解</span>, <span style="font-family: DejaVu Sans;">所以他们可能会考虑使用更加安全的加密法</span>.</p>
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in;"><em><br />
</em></p>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">在上个世纪</span>70<span style="font-family: DejaVu Sans;">年代被麻省理工学院的三位教授发明的</span>RSA<span style="font-family: DejaVu Sans;">加密算法就是一个足够安全的加密法</span>, <span style="font-family: DejaVu Sans;">当今互联网的</span>SSL<span style="font-family: DejaVu Sans;">安全连接协议的重要加密算法就包括了</span>RSA<span style="font-family: DejaVu Sans;">加密算法</span>. <span style="font-family: DejaVu Sans;">连接到你的网上银行</span>, <span style="font-family: DejaVu Sans;">查看这个安全连接的证书</span>, <span style="font-family: DejaVu Sans;">证书上很可能写的就是</span>“RSA<span style="font-family: DejaVu Sans;">加密</span>”.</p>
<p style="margin-bottom: 0in; text-align: center;"><img class="aligncenter" src="http://pics.philhu.net/2009/2009072301.png" alt="" width="274" height="83" /></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">当然</span>, RSA<span style="font-family: DejaVu Sans;">被广泛使用的原因还有一个</span>, <span style="font-family: DejaVu Sans;">那就是它的加密钥匙是公开的</span>, <span style="font-family: DejaVu Sans;">也就是说</span>, <span style="font-family: DejaVu Sans;">任何人都可以使用公开的密钥给消息加密</span>, <span style="font-family: DejaVu Sans;">却无法给刚加密的消息解密</span>.</p>
<p><span id="more-138"></span></p>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">现在</span>, <span style="font-family: DejaVu Sans;">若</span>Alice<span style="font-family: DejaVu Sans;">需要接收一条来自</span>Bob<span style="font-family: DejaVu Sans;">的消息</span>, <span style="font-family: DejaVu Sans;">她可以这样来生成密钥</span>:</p>
<blockquote><p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<ol>
<li>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">随机选取两个不相等的较大素数</span><em>p</em><span style="font-family: DejaVu Sans;">和</span><em>q</em>, 	<span style="font-family: DejaVu Sans;">计算</span><em>N</em>=<em>pq</em>.</p>
</li>
<li>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">根据欧拉函数</span>, 	<span style="font-family: DejaVu Sans;">计算不大于</span><em>N</em><span style="font-family: DejaVu Sans;">且与</span><em>N</em><span style="font-family: DejaVu Sans;">互质的正整数个数 </span><em>φ</em>(<em>N</em>) = (<em>p</em>-1)(<em>q</em>-1).</p>
</li>
<li>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">选取小于</span><em>φ</em>(<em>N</em>)<span style="font-family: DejaVu Sans;">且与</span><em>φ</em>(<em>N</em>)<span style="font-family: DejaVu Sans;">互质的正整数</span><em>e.</em></p>
</li>
<li>
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">选取小于</span><em>φ</em>(<em>N</em>)<span style="font-family: DejaVu Sans;">的正整数</span><em>d</em>, 	<span style="font-family: DejaVu Sans;">使得</span><em>e</em><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">和</span></span><em>d</em><span style="font-family: DejaVu Sans;">满足<span style="font-style: normal;"> </span></span><span style="font-style: normal;">(</span><em>d</em><em>×e</em><span style="font-style: normal;">)</span><em> </em><span style="font-style: normal;">Mod </span><em>φ</em><span style="font-style: normal;">(</span><em>N</em><span style="font-style: normal;">)=1</span><em>.</em></p>
</li>
<li>
<p style="margin-bottom: 0in; font-style: normal;"><span style="font-family: DejaVu Sans;">将公钥</span><em>N</em><span style="font-family: DejaVu Sans;">和</span><em>e</em><span style="font-family: DejaVu Sans;">公开</span>, 	<span style="font-family: DejaVu Sans;">保存好私钥</span><em>d</em>, <span style="font-family: DejaVu Sans;">销毁</span><em>p</em><span style="font-family: DejaVu Sans;">和</span><em>q</em><span style="font-family: DejaVu Sans;">的记录</span>.</p>
</li>
</ol>
</blockquote>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in; font-style: normal;"><span style="font-family: DejaVu Sans;">关于私钥</span><em>d</em><span style="font-family: DejaVu Sans;">的计算</span>, <span style="font-family: DejaVu Sans;">在实际应用中经常通过对</span><em>e</em><span style="font-family: DejaVu Sans;">做模逆运算来得到</span><em>d</em>, <span style="font-family: DejaVu Sans;">而高效解模逆运算的算法就是扩展</span>Euclid<span style="font-family: DejaVu Sans;">算法</span>.</p>
<p style="margin-bottom: 0in;"><em><br />
</em></p>
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in;"><span style="font-family: DejaVu Sans;">此时</span>, Bob<span style="font-family: DejaVu Sans;">已经知道了公钥</span><em>N</em><span style="font-family: DejaVu Sans;">和</span><em>e, </em><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">对于他要发送的消息</span></span><em>n </em><span style="font-style: normal;">(</span><em>n</em><span style="font-style: normal;">&lt;</span><em>N</em><span style="font-style: normal;">), </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">他可以计算出把</span></span><em>n</em><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">加密后的消息</span></span><em>c=n</em><sup><em>e</em></sup><em> </em><span style="font-style: normal;">Mod </span><em>N</em><span style="font-style: normal;">. Bob</span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">此时可以放心地把</span></span><em>c</em><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">发送给</span></span><span style="font-style: normal;">Alice</span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">了</span></span><span style="font-style: normal;">.</span></p>
<p style="margin-bottom: 0in;"><span style="font-style: normal;"><br />
</span></p>
<p style="margin-bottom: 0in;"><span style="font-style: normal;"> </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">对于</span></span><span style="font-style: normal;">Alice</span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">收到的加密消息</span></span><em>c</em><span style="font-style: normal;">, </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">她可以解密出原消息</span></span><em>n</em><span style="font-style: normal;">=</span><em>c</em><sup><em>d</em></sup><span style="font-style: normal;"> Mod </span><em>N</em><span style="font-style: normal;">.</span></p>
<p style="margin-bottom: 0in;"><span style="font-style: normal;"><br />
</span></p>
<p style="margin-bottom: 0in;"><span style="font-style: normal;"> </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">这样解密的原理是</span></span><span style="font-style: normal;">: </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">因为 </span></span><em>c</em><span style="font-style: normal;">≡</span><em>n</em><sup><em>e </em></sup><span style="font-style: normal;">(Mod </span><em>N</em><span style="font-style: normal;">), </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">所以 </span></span><em>c</em><sup><em>d</em></sup><span style="font-style: normal;">≡</span><em>n</em><sup><em>ed</em></sup><em> </em><span style="font-style: normal;">(Mod </span><em>N</em><span style="font-style: normal;">), </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">又因为</span></span><span style="font-style: normal;">(</span><em>ed</em><span style="font-style: normal;">)</span><em> </em><span style="font-style: normal;">Mod </span><em>φ</em><span style="font-style: normal;">(</span><em>N</em><span style="font-style: normal;">)=1, </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">根据费马小定理</span></span><span style="font-style: normal;">, </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">会有 </span></span><em>n</em><sup><em>ed</em></sup><span style="font-style: normal;">≡</span><em>n</em><span style="font-style: normal;"> (Mod </span><em>N</em><span style="font-style: normal;">) , </span><span style="font-family: DejaVu Sans;"><span style="font-style: normal;">从而 </span></span><em>n</em><span style="font-style: normal;">=</span><em>c</em><sup><em>d</em></sup><span style="font-style: normal;"> Mod </span><em>N.</em></p>
<p style="margin-bottom: 0in;"><em><br />
</em></p>
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;"><span style="font-family: DejaVu Sans;">若中间偷听者</span>Eve<span style="font-family: DejaVu Sans;">截获了密文</span><em>c</em>, <span style="font-family: DejaVu Sans;">目前直接由公钥</span><em>N</em>, <em>e</em>,<span style="font-family: DejaVu Sans;">密文</span><em>c</em><span style="font-family: DejaVu Sans;">导出原消息</span><em>n</em><span style="font-family: DejaVu Sans;">的唯一方法就是将公钥</span><em>N</em><span style="font-family: DejaVu Sans;">因式分解得到</span><em>p</em><span style="font-family: DejaVu Sans;">和</span><em>q</em>, <span style="font-family: DejaVu Sans;">计算得</span><em>φ</em>(<em>N</em>)<span style="font-family: DejaVu Sans;">后</span>, <span style="font-family: DejaVu Sans;">再由公钥</span><em>e</em><span style="font-family: DejaVu Sans;">计算出私钥</span><em>d</em>, <span style="font-family: DejaVu Sans;">而目前因式分解的较优算法仍然有</span>O(n<sup>1/2</sup>)<span style="font-family: DejaVu Sans;">的复杂度</span>, <span style="font-family: DejaVu Sans;">所以</span>Eve<span style="font-family: DejaVu Sans;">想要还原消息</span><em>n</em><span style="font-family: DejaVu Sans;">是相当困难的</span>.</p>
<p style="margin-bottom: 0in;"><em><br />
</em></p>
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;"><span style="font-family: DejaVu Sans;">上个世纪</span>90<span style="font-family: DejaVu Sans;">年代</span>, <span style="font-family: DejaVu Sans;">数百台计算机用了五个月的时间合作因式分解了一个长达</span>512<span style="font-family: DejaVu Sans;">位的</span>RSA-155<span style="font-family: DejaVu Sans;">号公钥</span><em>N</em>, <span style="font-family: DejaVu Sans;">所以</span>, <span style="font-family: DejaVu Sans;">现代</span>SSL<span style="font-family: DejaVu Sans;">安全协议对公钥</span><em>N</em><span style="font-family: DejaVu Sans;">的要求是起码</span>1024<span style="font-family: DejaVu Sans;">位</span>, <span style="font-family: DejaVu Sans;">而且</span><em>φ</em>(<em>N</em>)<span style="font-family: DejaVu Sans;">不应有过小的质因数</span>, <span style="font-family: DejaVu Sans;">所以在生成</span><em>p</em>,<em>q</em><span style="font-family: DejaVu Sans;">时</span>, <span style="font-family: DejaVu Sans;">通常是选取随机值再用</span>Miller-Rabin<span style="font-family: DejaVu Sans;">测试来检验随机值是否为素数</span>.</p>
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in; font-style: normal;">
<p style="margin-bottom: 0in;"><em><br />
</em></p>
<p style="margin-bottom: 0in; font-style: normal;"><span style="font-family: DejaVu Sans;">现在的</span>RSA<span style="font-family: DejaVu Sans;">加密算法看起来无懈可击</span>, <span style="font-family: DejaVu Sans;">但是若多项式时间的因式分解算法被发现</span>, <span style="font-family: DejaVu Sans;">或者能在多项式时间内分解因式的量子计算机被发明</span>, <span style="font-family: DejaVu Sans;">那么</span>RSA<span style="font-family: DejaVu Sans;">也会变得跟凯撒加密法一样脆弱</span>, <span style="font-family: DejaVu Sans;">到那时</span>, <span style="font-family: DejaVu Sans;">我们就需要发明新的加密传输方法了</span>.</p>
<p style="margin-bottom: 0in; font-style: normal;">
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom: 0in; font-style: normal;"><span style="color: #888888;">参考资料:</span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } --></p>
<p style="margin-bottom: 0in; font-style: normal;"><span style="color: #888888;"> 1<span style="color: #888888;">. </span></span><span style="color: #888888;"><em>Classical and Contemporary Cryptology</em>, Richard Spillman.</span></p>
<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } 		A:link { so-language: zxx } --></p>
<p style="margin-bottom: 0in; font-style: normal;"><span style="color: #888888;"> 2. <em><a href="http://en.wikipedia.org/wiki/Rsa">RSA</a></em> entry from Wikipedia.</span></p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138&amp;title=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95&amp;annotation=%0D%0A%E5%81%87%E5%A6%82Alice%E5%92%8CBob%E9%9C%80%E8%A6%81%E7%BB%8F%E8%BF%87%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%8F%AF%E9%9D%A0%E5%AA%92%E4%BB%8B%E4%BC%A0%E9%80%81%E4%B8%80%E6%9D%A1%E6%B6%88%E6%81%AF%2C%20%E4%BB%96%E4%BB%AC%E5%A4%A7%E6%A6%82%E4%BC%9A%E6%8A%8A%E8%BF%99%E6%9D%A1%E6%B6%88%E6%81%AF%E5%8A%A0%E5%AF%86%2C%20%E8%80%8C%E6%99%AE%E9%81%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%AD%97%E6%AF%8D%E7%A7%BB%E4%BD%8D%E6%B3%95%28%E5%87%AF%E6%92%92%E5%8A%A0%E5%AF%86%E6%B3%95%29%E5%A4%AA%E5%AE%B9%E6%98%93%E8%A2%AB%E7%A0%B4%E8%A7%A3%2C%20%E6%89%80%E4%BB%A5%E4%BB%96%E4%BB%AC%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%80%83%E8%99%91%E4%BD%BF%E7%94%A8%E6%9B%B4%E5%8A%A0%E5%AE%89%E5%85%A8%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95.%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%E5%9C" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138&amp;title=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95&amp;notes=%0D%0A%E5%81%87%E5%A6%82Alice%E5%92%8CBob%E9%9C%80%E8%A6%81%E7%BB%8F%E8%BF%87%E4%B8%80%E4%B8%AA%E4%B8%8D%E5%8F%AF%E9%9D%A0%E5%AA%92%E4%BB%8B%E4%BC%A0%E9%80%81%E4%B8%80%E6%9D%A1%E6%B6%88%E6%81%AF%2C%20%E4%BB%96%E4%BB%AC%E5%A4%A7%E6%A6%82%E4%BC%9A%E6%8A%8A%E8%BF%99%E6%9D%A1%E6%B6%88%E6%81%AF%E5%8A%A0%E5%AF%86%2C%20%E8%80%8C%E6%99%AE%E9%81%8D%E4%BD%BF%E7%94%A8%E7%9A%84%E5%AD%97%E6%AF%8D%E7%A7%BB%E4%BD%8D%E6%B3%95%28%E5%87%AF%E6%92%92%E5%8A%A0%E5%AF%86%E6%B3%95%29%E5%A4%AA%E5%AE%B9%E6%98%93%E8%A2%AB%E7%A0%B4%E8%A7%A3%2C%20%E6%89%80%E4%BB%A5%E4%BB%96%E4%BB%AC%E5%8F%AF%E8%83%BD%E4%BC%9A%E8%80%83%E8%99%91%E4%BD%BF%E7%94%A8%E6%9B%B4%E5%8A%A0%E5%AE%89%E5%85%A8%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95.%0D%0A%0D%0A%0D%0A%0D%0A%0D%0A%E5%9C" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138&amp;t=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F138&title=%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E7%9A%84%E5%8A%A0%E5%AF%86%E6%B3%95%3A%20RSA%E5%8A%A0%E5%AF%86%E7%AE%97%E6%B3%95" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/138/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Protected: NOI 2009 湖南省队集训 试题包下载</title>
		<link>http://www.cnphil.com/archives/123</link>
		<comments>http://www.cnphil.com/archives/123#comments</comments>
		<pubDate>Sat, 18 Jul 2009 14:28:50 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=123</guid>
		<description><![CDATA[There is no excerpt because this is a protected post.]]></description>
			<content:encoded><![CDATA[<form action="http://www.cnphil.com/wp-pass.php" method="post">
<p>This post is password protected. To view it please enter your password below:</p>
<p><label for="pwbox-123">Password:<br />
<input name="post_password" id="pwbox-123" type="password" size="20" /></label><br />
<input type="submit" name="Submit" value="Submit" /></p></form>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123&amp;title=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD&amp;annotation=HNOI_2009_Train" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123&amp;title=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD&amp;notes=HNOI_2009_Train" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123&amp;t=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F123&title=NOI%202009%20%E6%B9%96%E5%8D%97%E7%9C%81%E9%98%9F%E9%9B%86%E8%AE%AD%20%E8%AF%95%E9%A2%98%E5%8C%85%E4%B8%8B%E8%BD%BD" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/123/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网络流知识讲解</title>
		<link>http://www.cnphil.com/archives/76</link>
		<comments>http://www.cnphil.com/archives/76#comments</comments>
		<pubDate>Sun, 25 Jan 2009 15:14:30 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[Network Flow]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=76</guid>
		<description><![CDATA[网络流是图论中相当重要的一部分，也是计算机科学中比较难掌握的一类知识，在这我就给各位讲一讲网络流的有关知识。要注意的是，网络上，包括很多书籍中关于网络流的名词很容易被理解错，为了方便大家理解，我在这里对很多名词作了详尽解释。 网络流图是一个有向图，其中有的点只有出边（入度为0），而有的点只有入边（出度为0），在我们一般研究的网络流图中，入度为0的点一般只有一个，称之为源点（Source）通常标号为 s，出度为0的点也一般只有一个，称之为汇点（Sink）通常标号为 t。在我们研究的小部分网络流图中，有时候会有多个源点，也有时候会有多个汇点，这时候，我们为了更方便地研究问题，我们新增一个点，名为“超级源”，从这个超级源向每个源点分别发出一条边（权值∞），我们再新增一个点，名为“超级汇”，从每个汇点分别向这个超级汇发出一条边（权值∞）。这样原图的特性也保留了，我们也将问题简化了。值得注意的是，我们研究的网络流图都是连通赋权图。 首先网络流图是有向图，那么，我们用 (u,v) 表示从点 u 发出到点 v 的一条边（又称作一条弧）；同时，网络流图也是一个赋权图，那么每条边都会有一个权值了，我们将这个权值称为这条边的容量，我们把边 (u,v) 的容量记做   c(u,v) 。同时，我们联想到很多实际网络流问题，如物流问题，我们知道，每条边除容量之外还有一个实际流量，这个实际流量就是这条边实际分担的流。我们把边 (u,v) 的流量记为 f(u,v) 。对于网络流图中的任何一条边 (u,v) ，都满足 f(u,v)≤c(u,v) 。这是事实上就是网络流三大特性之一的容量限制特性。 在我们的图中，每一条边上都有形如“a / b”的标记，a 表示此边的流量，b 表示此边的容量，我们发现，的确每条边的流量都小于等于容量。 我们把一个形如“点 边 点 边 点 …… 点 边 点” 的序列叫做链，链必须是以点开头的，也必须是以点结尾的。链中的每条边的两旁都是点，而且必须是这条边连接的两个点。链的方向就是“从 u 到 v ”，但是，链对其中的边的方向是没有要求的，也就是说，一条从 u  到 v 的链，其中的边不一定要与“从 u 到 v ”同向，也就是说，链纯粹只是一个点边交替排列的序列，不一定要是一条连通的链。我们将一个链序列中与链同向的边叫做前向边，把链序列与链不同向的边叫做后向边。若一条链上全都是前向边，那么，这条链一定是连通的，我们叫这种链为单向链。在我们的图中，[s, (s,a), a, (a,c), c, (c,t), [...]]]></description>
			<content:encoded><![CDATA[<p>网络流是图论中相当重要的一部分，也是计算机科学中比较难掌握的一类知识，在这我就给各位讲一讲网络流的有关知识。要注意的是，网络上，包括很多书籍中关于网络流的名词很容易被理解错，为了方便大家理解，我在这里对很多名词作了详尽解释。</p>
<p><img class="alignnone" src="http://www.cnphil.com/imagephil/2009/20090130_01.png" alt="" width="589" height="329" /></p>
<p><span id="more-76"></span>网络流图是一个有向图，其中有的点只有出边（入度为0），而有的点只有入边（出度为0），在我们一般研究的网络流图中，入度为0的点一般只有一个，称之为<strong>源点（Source）</strong>通常标号为 s，出度为0的点也一般只有一个，称之为<strong>汇点（Sink）</strong>通常标号为 t。在我们研究的小部分网络流图中，有时候会有多个源点，也有时候会有多个汇点，这时候，我们为了更方便地研究问题，我们新增一个点，名为“<strong>超级源</strong>”，从这个超级源向每个源点分别发出一条边（权值∞），我们再新增一个点，名为“<strong>超级汇</strong>”，从每个汇点分别向这个超级汇发出一条边（权值∞）。这样原图的特性也保留了，我们也将问题简化了。值得注意的是，我们研究的网络流图都是连通赋权图。</p>
<p>首先网络流图是有向图，那么，我们用 (u,v) 表示从点 u 发出到点 v 的一条边（又称作一条弧）；同时，网络流图也是一个赋权图，那么每条边都会有一个权值了，我们将这个权值称为这条边的容量，我们把边 (u,v) 的容量记做   c(u,v) 。同时，我们联想到很多实际网络流问题，如物流问题，我们知道，每条边除容量之外还有一个实际流量，这个实际流量就是这条边实际分担的流。我们把边 (u,v) 的流量记为 f(u,v) 。对于网络流图中的任何一条边 (u,v) ，都满足 f(u,v)≤c(u,v) 。这是事实上就是网络流三大特性之一的<strong>容量限制</strong>特性。</p>
<p>在我们的图中，每一条边上都有形如“a / b”的标记，a 表示此边的流量，b 表示此边的容量，我们发现，的确每条边的流量都小于等于容量。</p>
<p><strong><span class="texhtml"><span style="font-weight: normal;">我们把一个形如“点 边 点 边 点 …… 点 边 点” 的序列叫做<strong>链</strong>，链必须是以点开头的，也必须是以点结尾的。链中的每条边的两旁都是点，而且必须是这条边连接的两个点。链的方向就是“从 u 到 v ”，但是，链对其中的边的方向是没有要求的，也就是说，一条从 u  到 v 的链，其中的边不一定要与“从 u 到 v ”同向，也就是说，链纯粹只是一个点边交替排列的序列，不一定要是一条连通的链。我们将一个链序列中与链同向的边叫做<strong>前向边</strong>，把链序列与链不同向的边叫做<strong>后向边</strong>。若一条链上全都是前向边，那么，这条链一定是连通的，我们叫这种链为<strong>单向链</strong>。在我们的图中，[s, (s,a), a, (a,c), c, (c,t), t] 是一条链而且是单向链，而 [s, (s,c), c, (c,t), t] 虽然是一条链但不是单向链，其中 (s,c) 为后向边，(c,t)为前向边。</span></span></strong></p>
<p>我们看一个净流量值 &#8216;f(u,v) ，这个值是指 u 到 v 的净流的大小，即这个净流量值等于从 u 到 v 的所有流量和减去从 v 到 u 所有流量和，请注意，u 和 v 之间有可能没有边相连，但是，它们可能由于与其他的点相连而使得他们之间有流量（即存在以 u,v 为首尾的单向链），也就是说若实际中从 u 到 v 有10单位流量，从 v 到 u 有3单位流量，那么，我们说，从 u 到 v 有7单位净流量，即净流量 &#8216;f(u,v)=7 。同时我们可以把问题更加数学化一点，既然从 u 到 v 有净流量 &#8216;f(u,v) ，那么我是不是也可以看成从 v 到 u 有净流量 –&#8217;f(u,v) 呢？这是肯定可以的。我们可以写出如下很容易理解的公式： &#8216;f(v,u)=-&#8217;f(u,v) 。这事实上是网络流三大特性之二的<strong>斜对称</strong>特性，又叫<strong>反对称</strong>特性。</p>
<p>我们观察到，一个网络流图中，除了源点及汇点以外，所有的点都既有出边又有入边，我们称这样的点为<strong>中间点</strong>，我们容易知道，对于任何一个中间点 u ，都有 ( Σ&#8217;f(u,w) )=0，其中 w 是图中的所有点。通俗一点，实际上就是说对于每个中间点的流入流量等与其流出流量，我们称这为该点的净流为0 。这就是网络流三大特性之三的<strong>流守恒</strong>特性。</p>
<p>我们还可以定义边(u,v)的<strong>剩余流量</strong><span class="texhtml">c<sub>f</sub><span class="texhtml">(u,v) = c(u,v) − f(u,v)</span>。<strong>路径</strong>其实就是单向链序列，当路径上每相邻的两个点之间当前方向的边只有一条时，我们可以把路径序列中的边都去掉，使得路径序列变成一条点序列，在我们的图中，[s, a, c] 是其中一条路径。若这个路径[<span class="texhtml">u<sub>1</sub>,u<sub>2</sub>,u<sub>3 </sub>... u<sub>n</sub>] 满足 u<sub>1</sub>=s 且 u<sub>n</sub>=t 且 c<sub>f</sub>(u<sub>i</sub>,u<sub>i + 1</sub>) &gt; 0 (其中 1≤i≤n)，我们就叫这个路径为<strong>扩张路径</strong>，对于扩张路径，我们有一个修正值θ，使得每一条边的流量增加θ后其流量依然小于等于其容量，我们不难发现，修正值θ的最大值就等于整条扩张路径上所有边的剩余流量<span class="texhtml">c<sub>f</sub><span class="texhtml">的最小值。在我们的图中，[s, b, d, t] 是一条扩张路径，其修正值θ的最大值等于 c<sub>f</sub><span class="texhtml">(d,t) =1 。</span></span></span></span></span></p>
<p>我们设有网络流图G=(V,E)， V 是其所有点的集合， E 是其所有边的集合。设 S<sub>1</sub>, S<sub>2</sub> 是 V 的两个真子集，且满足 S<sub>1</sub>∩S<sub>2</sub> =Ø , S<sub>1</sub>∪S<sub>2</sub> =V, s∈S<sub>1</sub> , t∈S<sub>2</sub>  . 设 A<sub>1</sub> 是 E 中所有两端点都在S<sub>1</sub>中的边的集合，设 A<sub>2</sub> 是 E 中所有两端点都在S<sub>2</sub>中的边的集合，设 A&#8217;=C<sub>E</sub>(A<sub>1</sub>∪A<sub>2</sub>) ，即 A&#8217; 是 A<sub>1</sub>∪A<sub>2</sub> 在全集 E 中的补集。那么我们称 A&#8217; 是关于(S<sub>1</sub>, S<sub>2</sub>)在图中的割集，简称割，记为 A&#8217;=(S<sub>1</sub>, S<sub>2</sub>) ，在我们的图中 { (a,c), (c,s), (b,d) } 就是一可行的割集，对于割集中所有始点在S<sub>1</sub>中而终点在S<sub>2</sub>中的“这样”的边（注意，在我们的图中，如果我们定义 S<sub>1</sub>={ s, a, b } ，定义 S<sub>2</sub>={ c, d, t } ，{ (a,c), (c,s), (b,d) } 为一可行的割集，其中 (c,s) 边不属于“这样”的边），“这样”的边的容量的和为割集 A&#8217; 的容量，其实这样我们就把整个图抽象为两个点（两个区间），从源点区到汇点区的流量就是“这样”的边的流量和，从汇点区到源点区的流量就是割集 A&#8217; 中不是“这样”的边的流量和。对应不同的S<sub>1</sub>, S<sub>2</sub>，其割集 A&#8217; 的容量也不同。我们把在所有的割集中容量最小的割集称为<strong>最小割集</strong>，简称<strong>最小割</strong>。</p>
<p>还记得之前的净流量 &#8216;f 吗，现在，我们可以称其为<strong>流</strong>，满足上述网络流三大特性的流称为可行流，每个可行流都有一个源点，一个汇点，就像净流量符号 &#8216;f(u,v) 一样，事实上， &#8216;f(u,v) 就是从 u 到 v 的可行流的（净流量）大小，对应所有从 u 到 v 的可行流，其净流量最大的一个，叫做<strong>最大流</strong>。</p>
<p>定理：（<strong>最大流-最小割定理</strong>）一个网络流图的最大流大小等于其最小割的容量。这个定理很容易证明。</p>
<p>对于一条链，若其满足以下两个条件：</p>
<p>(1) 链上所有前向边的流量都没有达到其容量，即所有前向边都为非饱和边。</p>
<p>(2) 链上所有后向边的流量都不为零。</p>
<p>那么，我们把这样的链叫做<strong>可增广道</strong>，我们发现前面我们定义的扩张路径其实就是可增广道的特例，那么，对应的，我们也可以找到一个修正值θ，让每条前向边的流量增加θ，而每条后向边的流量减少θ，这样，可行流就增大了。在我们的图中，[s, (c,s), c, (c,t), t] 这样一个可增广道，我们可以找到一个修正值θ=1，让 (c,s) 的流量减少1，让 (c,t) 的流量增加1 。这样，可行流 (s,t) 的净流量就增大了1 ，我们把这样通过修正值θ修正的过程叫做<strong>增广</strong>。可增广道的神奇性质就在于，通过增广可增广道，一定可以使得可行流增大，而且，我们这样做还能维护这个流的可行性，请大家想一想，可增广路为什么一定能够增广呢？我们观察可增广路上这样的点：这个点的前一条是后向边，这个点的后一条是前向边；（如我们的图中的 c 点） 这样的点一定不会只连了这两条边，肯定还连了另外一条相对于可增广道是前向的边，否则这个点的前向流量是从何而来呢？所以，我们把那条前向的边给这个点的流量重新分配一下，给可增广道中的前向边多一点，给可增广道中的后向边少一点。就这样，可增广道中的没一条边都可以通过被这个修正值θ修正来增大可行流。</p>
<p>这样我们的除了这样的一个结论：只要是可增广道，我们一定就可以通过增广来增大可行流。换句话说，我们得到了如下定理：可行流 f 是最大流当且仅当不存在关于 f 的可增广道。</p>
<p>这样一条定理似乎告诉了我们一个求网络流中最大流的方法。事实上，以这个定理为基础的求最大流的 <strong>Ford-Fulkerson 算法 </strong>是一个求最大流的复杂度较优并且广泛使用的算法，当然求最大流还有很多各有千秋的算法，下面我来一一讲解。</p>
<p>基础的 Ford-Fulkerson 算法流程如下：（之所以连接 Ford 和 Fulkerson 这两个单词的是&#8221;-&#8221;而不是&#8221;·&#8221;，就是因为这不是一个人的全名，而是两个人的名字合在一起，就像 Bellman-Ford 算法一样）</p>
<blockquote>
<ol>
<li>初始化一个可行流（一般是净流量为零的流）</li>
<li>在可行流中找到一条可增广道，若找不到，则当前可行流为最大流，退出算法。</li>
<li>找到适当的修正值θ增广该可增广道，所谓适当，就是维护该流可行性的最大可能值。</li>
<li>执行 2.</li>
</ol>
</blockquote>
<p>这个算法的中找到可增广道的实现方法有很多，一般有 DFS, BFS ，其中 BFS 的效率较优于 DFS ，为O(<span class="texhtml">VE<sup>2</sup></span>)。</p>
<p>基于以上算法的改进算法——<strong>标号法</strong>的主要流程如下：</p>
<blockquote>
<ol>
<li>在一个可行流（一般是净流量为零的流）上，给源点 s 标号 (0,+ ,θ(∞) ) ，分别表示标号为0；正向流出；以及可增广能力为无穷。此时 s 是仅有的已标号但未检查的点，其余的点为未标号的点。</li>
<li>若被标号的所有点均已检查过，此时该可行流就是最大流。否则到 3.</li>
<li>任取一个已标号但未检查的点 u ，找到所有与 u 有边（方向不限）相连的点 v ，满足以下 a.b. 之一：<br />
<blockquote><p>a.  有边 (u,v) ，且 f(u,v)&lt;c(u,v) ，则给 v 点标号 (u, +, θ(v) ) ，其中 θ(v)=min( θ(u), c(u,v)-f(u,v) )</p>
<p>b.  有边 (v,u) ，且 f(v,u)&gt;0 ，则给 v 点标号 (u, -, θ(v) ) ，其中 θ(v)=min( θ(u), f(v,u) )</p>
<p>c.  若汇点 t 未被标号，则将 u 点标记为已检查，进入 2. ；否则，我们已经找到了一条完整的可增广道，令 q=t 进入以下增广过程。（进入 4. ）</p></blockquote>
</li>
<li>若 q 点的标记为 + ，为 (p, +, θ(q) ) ，则 f(p,q)=f(p,q)+θ(t)，否则 f(q,p)=f(q,p)-θ(t)</li>
<li>若 q=s ，则去掉全部标记，转 1. ，否则转 4. 。</li>
</ol>
</blockquote>
<p>事实上，整个标号法就是在不断的找可增广道，然后增广，其实质就是 Ford-Fulkerson 算法。但是，我们有了一个副产品！在退出算法时，当前所有已标号且已检查的点所组成的集合 S1 就是网络流图的一个最小割 (S<sub>1</sub>, S<sub>2</sub>) 中的 S<sub>1</sub> ，也就是说，我们同时求出了网络流图的最小割之一。其时间复杂度依然为 O(<span class="texhtml">VE<sup>2</sup></span>) ，但在常数上有优化。所以，其只适用于边较稀疏的网络流图。那么，对于边稠密的网络流图，我们有没有更佳的算法呢？我们下次将介绍时间复杂度分别为 O(<span class="texhtml">V<sup>2</sup>E</span>) 和 O(<span class="texhtml">V<sup>3</sup></span>) 的两个算法。</p>
<p>好了，这些就是有关网络流的知识。最后在这新春佳节即将到来之际，我祝 cnPhil 的各位访客们来年学业进步，牛气冲天！</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76&amp;title=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3&amp;annotation=%E7%BD%91%E7%BB%9C%E6%B5%81%E6%98%AF%E5%9B%BE%E8%AE%BA%E4%B8%AD%E7%9B%B8%E5%BD%93%E9%87%8D%E8%A6%81%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%EF%BC%8C%E4%B9%9F%E6%98%AF%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%AD%E6%AF%94%E8%BE%83%E9%9A%BE%E6%8E%8C%E6%8F%A1%E7%9A%84%E4%B8%80%E7%B1%BB%E7%9F%A5%E8%AF%86%EF%BC%8C%E5%9C%A8%E8%BF%99%E6%88%91%E5%B0%B1%E7%BB%99%E5%90%84%E4%BD%8D%E8%AE%B2%E4%B8%80%E8%AE%B2%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9A%84%E6%9C%89%E5%85%B3%E7%9F%A5%E8%AF%86%E3%80%82%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C%E7%BD%91%E7%BB%9C%E4%B8%8A%EF%BC%8C%E5%8C%85%E6%8B%AC%E5%BE%88%E5%A4%9A%E4%B9%A6%E7%B1%8D%E4%B8%AD%E5%85%B3%E4%BA%8E%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9A%84%E5%90%8D%E8%AF%8D%E5%BE%88%E5%AE%B9%E6%98%93%E8%A2%AB%E7" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76&amp;title=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3&amp;notes=%E7%BD%91%E7%BB%9C%E6%B5%81%E6%98%AF%E5%9B%BE%E8%AE%BA%E4%B8%AD%E7%9B%B8%E5%BD%93%E9%87%8D%E8%A6%81%E7%9A%84%E4%B8%80%E9%83%A8%E5%88%86%EF%BC%8C%E4%B9%9F%E6%98%AF%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E4%B8%AD%E6%AF%94%E8%BE%83%E9%9A%BE%E6%8E%8C%E6%8F%A1%E7%9A%84%E4%B8%80%E7%B1%BB%E7%9F%A5%E8%AF%86%EF%BC%8C%E5%9C%A8%E8%BF%99%E6%88%91%E5%B0%B1%E7%BB%99%E5%90%84%E4%BD%8D%E8%AE%B2%E4%B8%80%E8%AE%B2%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9A%84%E6%9C%89%E5%85%B3%E7%9F%A5%E8%AF%86%E3%80%82%E8%A6%81%E6%B3%A8%E6%84%8F%E7%9A%84%E6%98%AF%EF%BC%8C%E7%BD%91%E7%BB%9C%E4%B8%8A%EF%BC%8C%E5%8C%85%E6%8B%AC%E5%BE%88%E5%A4%9A%E4%B9%A6%E7%B1%8D%E4%B8%AD%E5%85%B3%E4%BA%8E%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9A%84%E5%90%8D%E8%AF%8D%E5%BE%88%E5%AE%B9%E6%98%93%E8%A2%AB%E7" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76&amp;t=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F76&title=%E7%BD%91%E7%BB%9C%E6%B5%81%E7%9F%A5%E8%AF%86%E8%AE%B2%E8%A7%A3" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/76/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>NOI 2009 冬令营 · 笔记 (二)</title>
		<link>http://www.cnphil.com/archives/73</link>
		<comments>http://www.cnphil.com/archives/73#comments</comments>
		<pubDate>Sun, 18 Jan 2009 10:39:18 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[NOI]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=73</guid>
		<description><![CDATA[冬令营17日   首先说一下，今天的内容是我目前为止的收获最大的，因为今天的内容很多都涉及到了数学，还有就是晚上论文答辩的时候，吴文虎教授特别提到了一些有关信息学前景以及有关我们学习信息学的目的的问题，吴教授的发言我应该会在冬令营录像发下来之后录进电脑。   上午   内容: 信息学竞赛中的数学建模初探 授课: 李学武, TGC   李学武教授我仰慕很久了，因为李教授在数学理论方面建树颇丰，很有研究。今天听他的讲课更是深有感触。其实学信息学，数学是最重要而且密不可分的模块，不，不是模块，信息学就是数学的一部分，信息学研究的用强大的计算速度解决数学问题，其中有求解的，也有证明的，关于机器证明的那一部分，今年的集训队论文有人提到了，还不够彻底，我记得有一套书叫做《好玩的数学》中有一章就是讲的机器证明，很经典。这部分我以后再谈。 李教授讲的就是有一本数学名著《具体数学》中的一些经典问题，这里我提一下比较重要的部分。 递推关系与求和: 引入是 Josephus (约瑟夫)问题，我们已经知道，关于约瑟夫问题，有模拟的方法可解，但是，有没有更好的方法呢？答案是肯定的，我们观察每次报数出圈，有当前为偶数号的一部分人出圈，接下来，又是新一轮的报数出圈，而且有一部分人成了新的偶数号，我们不难发现，整个出圈的过程，就是一个递归的过程，好，那么我们定义 J(n) 为在有 n 个人的圈上，最后剩下来的人是几号。易得出如下三个递归定义的表达式： (1)    J(1)=1 (2)    J(2n)=2J(n)-1 (3)    J(2n+1)=2J(n)+1 其中 n 为正整数。 然后我们易得出一个闭形式 (closed form) 的表达式: J(2^m +l)=2l+1. 我们来看一下能不能再化简，我们把 n 化为一个 m 位二进制数，第一位为 B1，最后一位为 Bm，那么我们从那个闭形式表达式惊异地发现，每一次 J(n) 操作，只是把 n 这个二进制数的第一非零位 B1 ，移到 Bm 之后！多么神奇的性质啊！（原因请自己推导）那么，在进行多次 [...]]]></description>
			<content:encoded><![CDATA[<p>冬令营17日</p>
<p> </p>
<p>首先说一下，今天的内容是我目前为止的收获最大的，因为今天的内容很多都涉及到了数学，还有就是晚上论文答辩的时候，吴文虎教授特别提到了一些有关信息学前景以及有关我们学习信息学的目的的问题，吴教授的发言我应该会在冬令营录像发下来之后录进电脑。</p>
<p> </p>
<p>上午</p>
<p> </p>
<p>内容: 信息学竞赛中的数学建模初探</p>
<p>授课: 李学武, TGC</p>
<p> </p>
<p>李学武教授我仰慕很久了，因为李教授在数学理论方面建树颇丰，很有研究。今天听他的讲课更是深有感触。其实学信息学，数学是最重要而且密不可分的模块，不，不是模块，信息学就是数学的一部分，信息学研究的用强大的计算速度解决数学问题，其中有求解的，也有证明的，关于机器证明的那一部分，今年的集训队论文有人提到了，还不够彻底，我记得有一套书叫做《好玩的数学》中有一章就是讲的机器证明，很经典。这部分我以后再谈。</p>
<p>李教授讲的就是有一本数学名著《具体数学》中的一些经典问题，这里我提一下比较重要的部分。</p>
<p>递推关系与求和: 引入是 Josephus (约瑟夫)问题，我们已经知道，关于约瑟夫问题，有模拟的方法可解，但是，有没有更好的方法呢？答案是肯定的，我们观察每次报数出圈，有当前为偶数号的一部分人出圈，接下来，又是新一轮的报数出圈，而且有一部分人成了新的偶数号，我们不难发现，整个出圈的过程，就是一个递归的过程，好，那么我们定义 J(n) 为在有 n 个人的圈上，最后剩下来的人是几号。易得出如下三个递归定义的表达式：</p>
<p>(1)    J(1)=1</p>
<p>(2)    J(2n)=2J(n)-1</p>
<p>(3)    J(2n+1)=2J(n)+1</p>
<p>其中 n 为正整数。</p>
<p>然后我们易得出一个闭形式 (closed form) 的表达式: J(2^m +l)=2l+1.</p>
<p>我们来看一下能不能再化简，我们把 n 化为一个 m 位二进制数，第一位为 B1，最后一位为 Bm，那么我们从那个闭形式表达式惊异地发现，每一次 J(n) 操作，只是把 n 这个二进制数的第一非零位 B1 ，移到 Bm 之后！多么神奇的性质啊！（原因请自己推导）那么，在进行多次 J(n) 操作之后，在进行 J(n) 操作值就会不变了，原因是 n 的所有二进制位都变成 1 了，我们把这样的值叫做“不动点”，这个概念在复合函数中经常提到。多次调用这个函数，不动点会出现在原 n 二进制数中 1 的个数 k 次以下（因为尾部可能有连续的 1），而不动点的值就是 2^(k+1)-1.</p>
<p>我们再把刚刚那些递归定义的式子拓展一下：</p>
<p>(1)    f(1)=α</p>
<p>(2)    f(2n)=2f(n)+β</p>
<p>(3)    f(2n+1)=2f(n)+γ</p>
<p>我们再来尝试用闭形式来描述这些递推式。</p>
<p>观察后知，我们把这个函数写成 f(n)= A(n)α+B(n)β+C(n)γ.</p>
<p>我们列表发现，A(n)事实上是等于 trunc(log n), 而 B(n) 呢，则在 A(n) 不变的周期中随着 n 的增加而从 A(n)-1 递减到 0, C(n) 则恰好相反，在 A(n) 不变的周期中随着 n 的增加而从 0 递增到 A(n)-1. 这些结论，事实上可以由归纳法证明。</p>
<p>接下来，李教授讲了一些关于 sigma 式的化简，由于过于简单，我在这里就不再叙述了。但是李教授提出的思想却是相当好的：</p>
<p>递归&lt;&#8211;&gt;求和</p>
<p>  |      |</p>
<p>  &gt;闭形式&lt;</p>
<p>在有诸多表达式形式的情况下，我们要熟练掌握表达式的转化，这样我们才能高效地分析问题，从而解决问题。但这又需要我们有相当扎实的数学理论功底，以前对于名言“数学是无穷的科学”的理解一直停留在“数学题是做不完”的层面(哈哈！)，而我们现在发现，数学的代数变换，几何变换，以及数形结合还有最新的机器解题（信息学）等方面的探索是无穷无尽的，数学是最基础的自然科学，它的发展推动着整个科学界的发展。</p>
<p>下午是 TSU 的周源同学讲随机化算法，由于牵扯到很多概率的知识，我留到以后再讲；晚上答辩时吴文虎教授的讲话，我准备单独地写一篇文章，就不在这里写了。</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73&amp;title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29&amp;annotation=%E5%86%AC%E4%BB%A4%E8%90%A517%E6%97%A5%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E9%A6%96%E5%85%88%E8%AF%B4%E4%B8%80%E4%B8%8B%EF%BC%8C%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AF%E6%88%91%E7%9B%AE%E5%89%8D%E4%B8%BA%E6%AD%A2%E7%9A%84%E6%94%B6%E8%8E%B7%E6%9C%80%E5%A4%A7%E7%9A%84%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%86%85%E5%AE%B9%E5%BE%88%E5%A4%9A%E9%83%BD%E6%B6%89%E5%8F%8A%E5%88%B0%E4%BA%86%E6%95%B0%E5%AD%A6%EF%BC%8C%E8%BF%98%E6%9C%89%E5%B0%B1%E6%98%AF%E6%99%9A%E4%B8%8A%E8%AE%BA%E6%96%87%E7%AD%94%E8%BE%A9%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%90%B4%E6%96%87%E8%99%8E%E6%95%99%E6%8E%88%E7%89%B9%E5%88%AB%E6%8F%90%E5%88%B0%E4%BA%86%E4%B8%80%E4%BA%9B%E6%9C%89%E5%85%B3%E4%BF%A1%E6%81%AF%E5%AD%A6%E5%89%8D%E6%99%AF%E4%BB%A5%E5" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73&amp;title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29&amp;notes=%E5%86%AC%E4%BB%A4%E8%90%A517%E6%97%A5%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E9%A6%96%E5%85%88%E8%AF%B4%E4%B8%80%E4%B8%8B%EF%BC%8C%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%86%85%E5%AE%B9%E6%98%AF%E6%88%91%E7%9B%AE%E5%89%8D%E4%B8%BA%E6%AD%A2%E7%9A%84%E6%94%B6%E8%8E%B7%E6%9C%80%E5%A4%A7%E7%9A%84%EF%BC%8C%E5%9B%A0%E4%B8%BA%E4%BB%8A%E5%A4%A9%E7%9A%84%E5%86%85%E5%AE%B9%E5%BE%88%E5%A4%9A%E9%83%BD%E6%B6%89%E5%8F%8A%E5%88%B0%E4%BA%86%E6%95%B0%E5%AD%A6%EF%BC%8C%E8%BF%98%E6%9C%89%E5%B0%B1%E6%98%AF%E6%99%9A%E4%B8%8A%E8%AE%BA%E6%96%87%E7%AD%94%E8%BE%A9%E7%9A%84%E6%97%B6%E5%80%99%EF%BC%8C%E5%90%B4%E6%96%87%E8%99%8E%E6%95%99%E6%8E%88%E7%89%B9%E5%88%AB%E6%8F%90%E5%88%B0%E4%BA%86%E4%B8%80%E4%BA%9B%E6%9C%89%E5%85%B3%E4%BF%A1%E6%81%AF%E5%AD%A6%E5%89%8D%E6%99%AF%E4%BB%A5%E5" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73&amp;t=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F73&title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%BA%8C%29" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://www.cnphil.com/archives/270" title="HNOI 2010 解题报告">HNOI 2010 解题报告</a></li><li><a href="http://www.cnphil.com/archives/177" title="NOIp 2009 解题报告">NOIp 2009 解题报告</a></li><li><a href="http://www.cnphil.com/archives/70" title="NOI 2009 冬令营 · 笔记 (一)">NOI 2009 冬令营 · 笔记 (一)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/73/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NOI 2009 冬令营 · 笔记 (一)</title>
		<link>http://www.cnphil.com/archives/70</link>
		<comments>http://www.cnphil.com/archives/70#comments</comments>
		<pubDate>Thu, 15 Jan 2009 13:17:51 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[NOI]]></category>
		<category><![CDATA[Winter Camp]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=70</guid>
		<description><![CDATA[冬令营 Day 1.   上午 内容: 游戏中的数学模型与解题思路 授课人: 吴文虎教授,TSU.   今天上午是冬令营的第一堂课，按照惯例，第一堂课都是国际信息学奥林匹克中国队总教练清华大学教授吴文虎教授上的。 吴老一上课就给我们演示了一个“人鬼渡河”游戏，游戏规则是：有3人3鬼在东岸，有一条船容量为2，初始停在东岸，若某一岸（包括停在该岸边的船）上的鬼比人多，那么人就会被鬼吃了。请问如何将3人3鬼安全送到西岸？（注意：船不是电动的，必须要人或鬼划船）。 吴教授首先按照东岸的人数与鬼数表示一个状态：东岸的（人数，鬼数），有一些状态是安全的，有一些是不安全的（东岸或西岸鬼比人多），然后考虑状态的转移方式（即决策），转移（人数，鬼数），有：(1,0),(0,1),(1,1),(2,0),(0,2). 然后我们看我们的转移次数，当目前转移是奇数次时，一定是从东到西，所以是状态量减去决策量；若是偶数，则是从西到东，是状态量加上决策量。接下来我们要考虑判重，当我们东岸状态已经达到过并且船在同一侧时，我们需要剪枝。这样，一个标准的广搜就完成了（最初吴教练是用类似递推的方法，不记录历史状态，其实这样是有反例的：当我们把决策的考虑顺序打乱时，我们很容易走进死胡同，没有历史状态就没法回溯，所以是不正确的）。 休息几分钟后，吴教练开始讲递归，简单介绍了与或节点图，然后又简要地提了一下评估函数，东西都很简单，都是讲一下思想，我在这里就不写了。   当然，作为国家队总教练，吴教授讲的都是一些程序设计时的思想方法，比如说人鬼渡河这个例子，我们要从冗长的题目描述中提炼出关键信息，抽象成数学模型，然后从考虑数学模型中转移的方式，找到在数学模型中的转移决策，我们就能够很快地找到解决问题的较优方法。 另外，递归思想事实上是很奇妙的，在数学中也有很广泛的应用，还有很有趣的递归构造的分形Sierpinski三角形，以后我接着写吧。   下午 内容：IOI 2008 试题分析 授课人：周冬，原国家队队员,TSU. 这个试题分析其实就是简要地分析一下年鉴上的 IOI 2008 试题解法。有兴趣的可以去看看年鉴，我就不写了。 内容：博弈论相关 授课人：余林韵,TSU. 很有意思的课，首先这位同学简要介绍了 TSU 的“BIDU杯”程序设计大赛，然后他介绍了最近一届大赛“TankCraft”的情况，事实上就是 AI 竞赛，选手们的 AI 间互相打游戏，胜者为王。我们看了决赛的几个回放，真的很精彩，AI 算法都很强大。只是有一次出了一点小 Bug ，双方的3辆 Tank 都相持不动，因为双方都采用了预测对方策略的算法，而且两边都预计对方下一步会攻击，所以原地不动，很有意思。接下来，这位同学简要介绍了一下博弈论，提到的有 Nash均衡点 等博弈知识，其中有一个例子很有意思：有两个囚犯带枪准备犯案，被警察抓住了，警察发现他们以前也犯过罪，但找不到证据，于是拘留了他们俩，隔离突击审讯。如果两个都没招，那么他们俩因“非法携带枪支”各判一年；若有一个招了，另一个没招，那么，没招的那个会判15年，招了的那个因为是证人所以没有被起诉；如果两个都招了，则各判10年。我们来看一看 Nash 均衡点 在哪里：甲想如果甲不招，乙很可能会招，甲会判15年，而甲招了的话，有可能不会被起诉，也有可能是被判10年。所以，甲会招。同理，乙也会招。所以他们两个各被判10年。所以这个问题的 Nash均衡点 在两个都招了的状态这。说明 Nash均衡点 对于某些问题并不是最优的方案。   晚上 我们去了位于办公楼的机房，很惊讶地发现装的系统是基于 Ubuntu [...]]]></description>
			<content:encoded><![CDATA[<p>冬令营 Day 1.</p>
<p> </p>
<p>上午</p>
<p>内容: 游戏中的数学模型与解题思路</p>
<p>授课人: 吴文虎教授,TSU.</p>
<p> </p>
<p>今天上午是冬令营的第一堂课，按照惯例，第一堂课都是国际信息学奥林匹克中国队总教练清华大学教授吴文虎教授上的。</p>
<p>吴老一上课就给我们演示了一个“人鬼渡河”游戏，游戏规则是：有3人3鬼在东岸，有一条船容量为2，初始停在东岸，若某一岸（包括停在该岸边的船）上的鬼比人多，那么人就会被鬼吃了。请问如何将3人3鬼安全送到西岸？（注意：船不是电动的，必须要人或鬼划船）。</p>
<p>吴教授首先按照东岸的人数与鬼数表示一个状态：东岸的（人数，鬼数），有一些状态是安全的，有一些是不安全的（东岸或西岸鬼比人多），然后考虑状态的转移方式（即决策），转移（人数，鬼数），有：(1,0),(0,1),(1,1),(2,0),(0,2). 然后我们看我们的转移次数，当目前转移是奇数次时，一定是从东到西，所以是状态量减去决策量；若是偶数，则是从西到东，是状态量加上决策量。接下来我们要考虑判重，当我们东岸状态已经达到过并且船在同一侧时，我们需要剪枝。这样，一个标准的广搜就完成了（最初吴教练是用类似递推的方法，不记录历史状态，其实这样是有反例的：当我们把决策的考虑顺序打乱时，我们很容易走进死胡同，没有历史状态就没法回溯，所以是不正确的）。</p>
<p>休息几分钟后，吴教练开始讲递归，简单介绍了与或节点图，然后又简要地提了一下评估函数，东西都很简单，都是讲一下思想，我在这里就不写了。</p>
<p> </p>
<p>当然，作为国家队总教练，吴教授讲的都是一些程序设计时的思想方法，比如说人鬼渡河这个例子，我们要从冗长的题目描述中提炼出关键信息，抽象成数学模型，然后从考虑数学模型中转移的方式，找到在数学模型中的转移决策，我们就能够很快地找到解决问题的较优方法。</p>
<p>另外，递归思想事实上是很奇妙的，在数学中也有很广泛的应用，还有很有趣的递归构造的分形Sierpinski三角形，以后我接着写吧。</p>
<p> </p>
<p>下午</p>
<p>内容：IOI 2008 试题分析</p>
<p>授课人：周冬，原国家队队员,TSU.</p>
<p>这个试题分析其实就是简要地分析一下年鉴上的 IOI 2008 试题解法。有兴趣的可以去看看年鉴，我就不写了。</p>
<p>内容：博弈论相关</p>
<p>授课人：余林韵,TSU.</p>
<p>很有意思的课，首先这位同学简要介绍了 TSU 的“BIDU杯”程序设计大赛，然后他介绍了最近一届大赛“TankCraft”的情况，事实上就是 AI 竞赛，选手们的 AI 间互相打游戏，胜者为王。我们看了决赛的几个回放，真的很精彩，AI 算法都很强大。只是有一次出了一点小 Bug ，双方的3辆 Tank 都相持不动，因为双方都采用了预测对方策略的算法，而且两边都预计对方下一步会攻击，所以原地不动，很有意思。接下来，这位同学简要介绍了一下博弈论，提到的有 Nash均衡点 等博弈知识，其中有一个例子很有意思：有两个囚犯带枪准备犯案，被警察抓住了，警察发现他们以前也犯过罪，但找不到证据，于是拘留了他们俩，隔离突击审讯。如果两个都没招，那么他们俩因“非法携带枪支”各判一年；若有一个招了，另一个没招，那么，没招的那个会判15年，招了的那个因为是证人所以没有被起诉；如果两个都招了，则各判10年。我们来看一看 Nash 均衡点 在哪里：甲想如果甲不招，乙很可能会招，甲会判15年，而甲招了的话，有可能不会被起诉，也有可能是被判10年。所以，甲会招。同理，乙也会招。所以他们两个各被判10年。所以这个问题的 Nash均衡点 在两个都招了的状态这。说明 Nash均衡点 对于某些问题并不是最优的方案。</p>
<p> </p>
<p>晚上</p>
<p>我们去了位于办公楼的机房，很惊讶地发现装的系统是基于 Ubuntu (Linux) 的 NOI Linux 系统，是中国计算机学会 (CCF) 联合北京航空航天大学开发的一套系统，包括一套开源的信息学竞赛 IDE 系统和一套信息学竞赛评测系统，估计 NOIp 2008 就是在这个环境下评测的。很不错的一套系统。</p>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70&amp;title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29&amp;annotation=%E5%86%AC%E4%BB%A4%E8%90%A5%20Day%201.%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E4%B8%8A%E5%8D%88%0D%0A%0D%0A%E5%86%85%E5%AE%B9%3A%20%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%9E%8B%E4%B8%8E%E8%A7%A3%E9%A2%98%E6%80%9D%E8%B7%AF%0D%0A%0D%0A%E6%8E%88%E8%AF%BE%E4%BA%BA%3A%20%E5%90%B4%E6%96%87%E8%99%8E%E6%95%99%E6%8E%88%2CTSU.%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E4%BB%8A%E5%A4%A9%E4%B8%8A%E5%8D%88%E6%98%AF%E5%86%AC%E4%BB%A4%E8%90%A5%E7%9A%84%E7%AC%AC%E4%B8%80%E5%A0%82%E8%AF%BE%EF%BC%8C%E6%8C%89%E7%85%A7%E6%83%AF%E4%BE%8B%EF%BC%8C%E7%AC%AC%E4%B8%80%E5%A0%82%E8%AF%BE%E9%83%BD%E6%98%AF%E5%9B%BD%E9%99%85%E4%BF%A1%E6%81%AF%E5%AD%A6%E5%A5%A5%E6%9E%97%E5%8C%B9%E5%85%8B%E4%B8%AD%E5%9B%BD%E9%98%9F%E6%80%BB%E6%95%99%E7%BB%83%E6%B8" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70&amp;title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29&amp;notes=%E5%86%AC%E4%BB%A4%E8%90%A5%20Day%201.%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E4%B8%8A%E5%8D%88%0D%0A%0D%0A%E5%86%85%E5%AE%B9%3A%20%E6%B8%B8%E6%88%8F%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%9E%8B%E4%B8%8E%E8%A7%A3%E9%A2%98%E6%80%9D%E8%B7%AF%0D%0A%0D%0A%E6%8E%88%E8%AF%BE%E4%BA%BA%3A%20%E5%90%B4%E6%96%87%E8%99%8E%E6%95%99%E6%8E%88%2CTSU.%0D%0A%0D%0A%C2%A0%0D%0A%0D%0A%E4%BB%8A%E5%A4%A9%E4%B8%8A%E5%8D%88%E6%98%AF%E5%86%AC%E4%BB%A4%E8%90%A5%E7%9A%84%E7%AC%AC%E4%B8%80%E5%A0%82%E8%AF%BE%EF%BC%8C%E6%8C%89%E7%85%A7%E6%83%AF%E4%BE%8B%EF%BC%8C%E7%AC%AC%E4%B8%80%E5%A0%82%E8%AF%BE%E9%83%BD%E6%98%AF%E5%9B%BD%E9%99%85%E4%BF%A1%E6%81%AF%E5%AD%A6%E5%A5%A5%E6%9E%97%E5%8C%B9%E5%85%8B%E4%B8%AD%E5%9B%BD%E9%98%9F%E6%80%BB%E6%95%99%E7%BB%83%E6%B8" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70&amp;t=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F70&title=NOI%202009%20%E5%86%AC%E4%BB%A4%E8%90%A5%20%C2%B7%20%E7%AC%94%E8%AE%B0%20%28%E4%B8%80%29" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://www.cnphil.com/archives/270" title="HNOI 2010 解题报告">HNOI 2010 解题报告</a></li><li><a href="http://www.cnphil.com/archives/177" title="NOIp 2009 解题报告">NOIp 2009 解题报告</a></li><li><a href="http://www.cnphil.com/archives/73" title="NOI 2009 冬令营 · 笔记 (二)">NOI 2009 冬令营 · 笔记 (二)</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/70/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Pascal 中的操作符定义与重载操作符定义</title>
		<link>http://www.cnphil.com/archives/53</link>
		<comments>http://www.cnphil.com/archives/53#comments</comments>
		<pubDate>Sun, 02 Nov 2008 15:32:16 +0000</pubDate>
		<dc:creator>Phil</dc:creator>
				<category><![CDATA[Informatics]]></category>
		<category><![CDATA[Free Pascal]]></category>
		<category><![CDATA[Pascal]]></category>

		<guid isPermaLink="false">http://www.cnphil.com/?p=53</guid>
		<description><![CDATA[用 Vista 的感觉很好。我一直没用过 Vista ，现在 Vista 和 Windows 7 一起用，感觉真不错哈！ 看了柯南兄的Blog，感觉他的操作符描述很模糊，在这里我想讲一遍。 不多废话了： 1 program cnPhil_operator; 2 3 operator **(a,b:longint)p:longint;//定义双longint**操作 4 var q:real; 5 begin 6 q:=exp(b*ln(a)); 7 p:=trunc(q); 8 end; 9 10 operator **(a,b:string)p:longint;//定义双string**操作，注意声明同名运算符时，运算量类型一定不能一样，比如有了一个双integer的-操作，你不能再次声明双integer的-操作，但是你可以声明双string的-操作，否则会重载！ 11 var 12 i,j:longint; 13 ok:integer; 14 begin 15 val(a,i,ok); 16 val(b,j,ok); 17 p:=trunc(i**j);//调用以前声明的双longint的**操作，其实运算符声明也可以递归实现！但此处不是递归，而是利用了运算符可以因不同运算量类型而重复定义的特性。 18 end; 19 20 21 22 23 [...]]]></description>
			<content:encoded><![CDATA[<p>用 Vista 的感觉很好。我一直没用过 Vista ，现在 Vista 和 Windows 7 一起用，感觉真不错哈！</p>
<p>看了柯南兄的Blog，感觉他的操作符描述很模糊，在这里我想讲一遍。</p>
<p>不多废话了：</p>
<div>
<pre class="hl"><span class="line">    1 </span><span class="kwa">program</span> cnPhil_operator<span class="sym">;</span>
<a name="l_2"></a><span class="line">    2 </span>
<a name="l_3"></a><span class="line">    3 </span>operator <span class="sym">**(</span>a<span class="sym">,</span>b<span class="sym">:</span><span class="kwb">longint</span><span class="sym">)</span>p<span class="sym">:</span><span class="kwb">longint</span><span class="sym">;</span><span class="slc">//定义双longint**操作</span>
<a name="l_4"></a><span class="line">    4 </span><span class="kwa">var</span> q<span class="sym">:</span><span class="kwb">real</span><span class="sym">;</span>
<a name="l_5"></a><span class="line">    5 </span><span class="kwa">begin</span>
<a name="l_6"></a><span class="line">    6 </span>     q<span class="sym">:=</span><span class="kwd">exp</span><span class="sym">(</span>b<span class="sym">*</span><span class="kwd">ln</span><span class="sym">(</span>a<span class="sym">));</span>
<a name="l_7"></a><span class="line">    7 </span>     p<span class="sym">:=</span><span class="kwd">trunc</span><span class="sym">(</span>q<span class="sym">);</span>
<a name="l_8"></a><span class="line">    8 </span><span class="kwa">end</span><span class="sym">;</span>
<a name="l_9"></a><span class="line">    9 </span>
<a name="l_10"></a><span class="line">   10 </span>operator <span class="sym">**(</span>a<span class="sym">,</span>b<span class="sym">:</span><span class="kwa">string</span><span class="sym">)</span>p<span class="sym">:</span><span class="kwb">longint</span><span class="sym">;</span><span class="slc">//定义双string**操作，注意声明同名运算符时，运算量类型一定不能一样，比如有了一个双integer的-操作，你不能再次声明双integer的-操作，但是你可以声明双string的-操作，否则会重载！</span>
<a name="l_11"></a><span class="line">   11 </span>  <span class="kwa">var</span>
<a name="l_12"></a><span class="line">   12 </span>    i<span class="sym">,</span>j<span class="sym">:</span><span class="kwb">longint</span><span class="sym">;</span>
<a name="l_13"></a><span class="line">   13 </span>    ok<span class="sym">:</span><span class="kwb">integer</span><span class="sym">;</span>
<a name="l_14"></a><span class="line">   14 </span>  <span class="kwa">begin</span>
<a name="l_15"></a><span class="line">   15 </span>       <span class="kwd">val</span><span class="sym">(</span>a<span class="sym">,</span>i<span class="sym">,</span>ok<span class="sym">);</span>
<a name="l_16"></a><span class="line">   16 </span>       <span class="kwd">val</span><span class="sym">(</span>b<span class="sym">,</span>j<span class="sym">,</span>ok<span class="sym">);</span>
<a name="l_17"></a><span class="line">   17 </span>       p<span class="sym">:=</span><span class="kwd">trunc</span><span class="sym">(</span>i<span class="sym">**</span>j<span class="sym">);</span><span class="slc">//调用以前声明的双longint的**操作，其实运算符声明也可以递归实现！但此处不是递归，而是利用了运算符可以因不同运算量类型而重复定义的特性。</span>
<a name="l_18"></a><span class="line">   18 </span>  <span class="kwa">end</span><span class="sym">;</span>
<a name="l_19"></a><span class="line">   19 </span>
<a name="l_20"></a><span class="line">   20 </span>
<a name="l_21"></a><span class="line">   21 </span>
<a name="l_22"></a><span class="line">   22 </span>
<a name="l_23"></a><span class="line">   23 </span><span class="kwa">begin</span>
<a name="l_24"></a><span class="line">   24 </span>        <span class="kwd">writeln</span><span class="sym">(</span><span class="str">'2^3='</span><span class="sym">,</span><span class="num">2</span><span class="sym">**</span><span class="num">3</span><span class="sym">);</span>
<a name="l_25"></a><span class="line">   25 </span>        <span class="kwd">writeln</span><span class="sym">(</span><span class="str">''</span><span class="str">'2'</span><span class="str">'^'</span><span class="str">'3'</span><span class="str">'='</span><span class="sym">,</span><span class="str">'2'</span><span class="sym">**</span><span class="str">'3'</span><span class="sym">);</span>
<a name="l_26"></a><span class="line">   26 </span><span class="kwa">end</span><span class="sym">.</span></pre>
<pre class="hl">另外贴一张我的本本跑 Vista 的图，现在我的本本可是四系统啊（XP,Vista,Win7,Ubuntu），很强吧？</pre>
<pre class="hl">
<table style="width: auto;" border="0">
<tbody>
<tr>
<td><a href="http://picasaweb.google.com/lh/photo/cxEY7_mhSUH5O7Fkja_-pA"><img src="http://lh5.ggpht.com/_7HlAPY3wLzo/SQ3HyGl_kUI/AAAAAAAAAHo/_xcrm4eCkHY/s800/SrSv01.jpg" alt="" /></a></td>
</tr>
<tr>
<td style="font-family:arial,sans-serif; font-size:11px; text-align:right">发件人 <a href="http://picasaweb.google.com/PicnPhil/CnPhilPhoto">cnPhil/Photo</a></td>
</tr>
</tbody>
</table>
</pre>
</div>



Share and Enjoy:


	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53&amp;title=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89&amp;annotation=%E7%94%A8%20Vista%20%E7%9A%84%E6%84%9F%E8%A7%89%E5%BE%88%E5%A5%BD%E3%80%82%E6%88%91%E4%B8%80%E7%9B%B4%E6%B2%A1%E7%94%A8%E8%BF%87%20Vista%20%EF%BC%8C%E7%8E%B0%E5%9C%A8%20Vista%20%E5%92%8C%20Windows%207%20%E4%B8%80%E8%B5%B7%E7%94%A8%EF%BC%8C%E6%84%9F%E8%A7%89%E7%9C%9F%E4%B8%8D%E9%94%99%E5%93%88%EF%BC%81%0D%0A%0D%0A%E7%9C%8B%E4%BA%86%E6%9F%AF%E5%8D%97%E5%85%84%E7%9A%84Blog%EF%BC%8C%E6%84%9F%E8%A7%89%E4%BB%96%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E6%8F%8F%E8%BF%B0%E5%BE%88%E6%A8%A1%E7%B3%8A%EF%BC%8C%E5%9C%A8%E8%BF%99%E9%87%8C%E6%88%91%E6%83%B3%E8%AE%B2%E4%B8%80%E9%81%8D%E3%80%82%0D%0A%0D%0A%E4%B8%8D%E5%A4%9A%E5%BA%9F%E8%AF%9D%E4%BA%86%EF%BC%9A%0D%0A%0D%0A%20%20%20%201%20program" title="Google Bookmarks"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53&amp;title=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89&amp;notes=%E7%94%A8%20Vista%20%E7%9A%84%E6%84%9F%E8%A7%89%E5%BE%88%E5%A5%BD%E3%80%82%E6%88%91%E4%B8%80%E7%9B%B4%E6%B2%A1%E7%94%A8%E8%BF%87%20Vista%20%EF%BC%8C%E7%8E%B0%E5%9C%A8%20Vista%20%E5%92%8C%20Windows%207%20%E4%B8%80%E8%B5%B7%E7%94%A8%EF%BC%8C%E6%84%9F%E8%A7%89%E7%9C%9F%E4%B8%8D%E9%94%99%E5%93%88%EF%BC%81%0D%0A%0D%0A%E7%9C%8B%E4%BA%86%E6%9F%AF%E5%8D%97%E5%85%84%E7%9A%84Blog%EF%BC%8C%E6%84%9F%E8%A7%89%E4%BB%96%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E6%8F%8F%E8%BF%B0%E5%BE%88%E6%A8%A1%E7%B3%8A%EF%BC%8C%E5%9C%A8%E8%BF%99%E9%87%8C%E6%88%91%E6%83%B3%E8%AE%B2%E4%B8%80%E9%81%8D%E3%80%82%0D%0A%0D%0A%E4%B8%8D%E5%A4%9A%E5%BA%9F%E8%AF%9D%E4%BA%86%EF%BC%9A%0D%0A%0D%0A%20%20%20%201%20program" title="del.icio.us"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53&amp;t=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89" title="Facebook"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.friendfeed.com/share?title=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89&amp;link=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53" title="FriendFeed"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/friendfeed.png" title="FriendFeed" alt="FriendFeed" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%20-%20http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53" title="Twitter"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.douban.com/recommend/?url=http%3A%2F%2Fwww.cnphil.com%2Farchives%2F53&title=Pascal%20%E4%B8%AD%E7%9A%84%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89%E4%B8%8E%E9%87%8D%E8%BD%BD%E6%93%8D%E4%BD%9C%E7%AC%A6%E5%AE%9A%E4%B9%89" title="豆瓣"><img src="http://www.cnphil.com/wp-content/plugins/sociable/images/douban.png" title="豆瓣" alt="豆瓣" class="sociable-hovers" /></a>


<br/><br/><h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li>No Related Posts</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.cnphil.com/archives/53/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
