﻿<?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++博客-心無雜念的空白-文章分类-TopCode SRM</title><link>http://www.cppblog.com/lshain/category/17525.html</link><description>Beyond this world...</description><language>zh-cn</language><lastBuildDate>Wed, 10 Aug 2011 07:48:41 GMT</lastBuildDate><pubDate>Wed, 10 Aug 2011 07:48:41 GMT</pubDate><ttl>60</ttl><item><title>SRM 514</title><link>http://www.cppblog.com/lshain/articles/152945.html</link><dc:creator>Lshain</dc:creator><author>Lshain</author><pubDate>Wed, 10 Aug 2011 06:17:00 GMT</pubDate><guid>http://www.cppblog.com/lshain/articles/152945.html</guid><description><![CDATA[<div>250Point:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由坐标(0, 0)，通过类似马步的走法，判断能不能到达(x, y)，其中，马步的间隔由题目给出，例如，间隔为n，则从坐标(0, 0)出发，一步可到达(n, 1), (n, -1), (1, n), (-1, n), (-n, 1), (-n, -1), (1, -n), (-1, -n)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分析：开始时，这个题我想复杂了，本来想枚举+BFS，后来稍微分析下，就可以得到结论。(xE表示任意偶数X坐标，xO表示任意奇数X坐标，Y坐标类似。nEven表示任意偶数间隔，nOdd表示任意奇数间隔)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1. 从坐标(0, 0)出发，通过(0, 0) -&gt; (1, n) -&gt; (2, 0) .... 可以到达(xE, 0)。通过(0, 0) -&gt; (n, 1) -&gt; (0, 2).... 可以到达(0, yE)。所以通过坐标(0, 0)可以到达(xE, yE)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2. 在1的基础上：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(1) 当马步间隔集合中存在至少一个偶数间隔nEven时：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由1知(xE, yE)可达。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(xO, yE)可达，通过(xE' + 1, yE' + nEven)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(xE, yO)可达，通过(xE' + nEven, yE' + 1)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(XO, YO)可达，通过(xO' + nEven, yE' + 1)或者(xE' + 1, yO' + nEven)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2) 当马步间隔集合中不存在偶数间隔时：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;由1知(xE, yE)可达。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(xO, yE)和&nbsp;(xE, yO)均不可达，因为通过(xE', yE')只能到达(XO&#8216;, YO&#8217;)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(XO, YO)可达，通过(xE' + nOdd, yE' + 1)或者(xE' + 1, yE' + nOdd)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总结：当马步间隔集合中存在至少一个偶数间隔nEven时，任意坐标(x, y)可达，当马步间隔集合中不存在偶数间隔时，只有(xE, yE)和(xO, yO)可达。<br /></div> <img src ="http://www.cppblog.com/lshain/aggbug/152945.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lshain/" target="_blank">Lshain</a> 2011-08-10 14:17 <a href="http://www.cppblog.com/lshain/articles/152945.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>