﻿<?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++博客-klion26-随笔分类-USACO</title><link>http://www.cppblog.com/klion/category/13665.html</link><description>klion26's blog</description><language>zh-cn</language><lastBuildDate>Tue, 14 Dec 2010 12:10:13 GMT</lastBuildDate><pubDate>Tue, 14 Dec 2010 12:10:13 GMT</pubDate><ttl>60</ttl><item><title>USACO 4-1-4Cryptcowgraphy</title><link>http://www.cppblog.com/klion/archive/2010/12/11/136181.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sat, 11 Dec 2010 13:22:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/12/11/136181.html</guid><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/cryptcow">题意</a><br>这题如果硬搜是肯定过不了的,一开始我的做法是,先搜'C'再搜'O'最后'W',然后中间判断一些,如果不可能到达目标状态[原字符串],就剪枝剪掉,我的剪枝方法很简单,一是开个大数组记录所有已经出现过的字符串,然后如果再搜到这里的话,就直接推出就行了,不用再往下搜了[因为前面已经搜过一次不行了],还有一个就是没两个相邻的编码字符[C,O,W]之间的字符串一定是目标串的字串也行[因为交换不会改变这些字符串的顺序].可是这样还是超时了,然后问了下czw.他说直接hash,先搜O,然后再处理C和W,我想这样的话,那么我的就只用把搜索顺序改一下就行了,不过由于代码已经很混乱了,所以就直接重写了,而且还借用了网上的一个字符串hash函数ELFHash,然后写出来之后发现非常之蛋疼.我的结果不对,找来分代码来匹配,基本一样的,只不过我没有加我上面那第二个优化,后来加上之后发现过了,这样看来是hash函数冲突了,但是我没处理.所以导致程序挂了.<br>那么这题的思路如下:<br>1首先搜索顺序是先O再C和W<br>2用字符串hash函数hash判重<br>3如果发现有两个相邻的编码字符之间的字符串不是目标串的字串的话,就剪枝<br>这样可以把所有的数据都1s内搞定<br><span style="COLOR: red">[此解法有一定的偶然性,原因是ELFHash造成的(当我把hash表开到100000,而且模的那个数也是100000的时候,第8个数据过不去).所以下面的也可以说是cheat过去的.正在看官方的,看懂后我会再发出来,官方的也是用到hash,不过hash的时候都是模一个大素数的,不然冲突的可能性会很大.还有第二种方法似乎没用到hash,<a href="http://u.115.com/file/f95b0cf7ce">现传上官方报告</a>]</span><br>代码如下:<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_203554 onclick="this.style.display='none'; Code_Closed_Text_203554.style.display='none'; Code_Open_Image_203554.style.display='inline'; Code_Open_Text_203554.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_203554 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_203554.style.display='none'; Code_Closed_Image_203554.style.display='inline'; Code_Closed_Text_203554.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_203554 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">code</span><span id=Code_Open_Text_203554 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;&nbsp;1</span><img id=Codehighlighter1_0_46_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_46_Open_Text.style.display='none'; Codehighlighter1_0_46_Closed_Image.style.display='inline'; Codehighlighter1_0_46_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_46_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_46_Closed_Text.style.display='none'; Codehighlighter1_0_46_Open_Image.style.display='inline'; Codehighlighter1_0_46_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_46_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_0_46_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;&nbsp;2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;ID:qcx97811<br></span><span style="COLOR: #008080">&nbsp;&nbsp;3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;LANG:C++<br></span><span style="COLOR: #008080">&nbsp;&nbsp;4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;TASK:cryptcow<br></span><span style="COLOR: #008080">&nbsp;&nbsp;5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">math.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ori_str[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Begin&nbsp;the&nbsp;Escape&nbsp;execution&nbsp;at&nbsp;the&nbsp;Break&nbsp;of&nbsp;Dawn</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;in_str[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">&nbsp;13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ii_c,ii_o,ii_w;<br></span><span style="COLOR: #008080">&nbsp;14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;hash[</span><span style="COLOR: #000000">51071</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">&nbsp;15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>unsigned&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ELFHash(&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[])<br></span><span style="COLOR: #008080">&nbsp;16</span><span style="COLOR: #000000"><img id=Codehighlighter1_287_564_Open_Image onclick="this.style.display='none'; Codehighlighter1_287_564_Open_Text.style.display='none'; Codehighlighter1_287_564_Closed_Image.style.display='inline'; Codehighlighter1_287_564_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_287_564_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_287_564_Closed_Text.style.display='none'; Codehighlighter1_287_564_Open_Image.style.display='inline'; Codehighlighter1_287_564_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_287_564_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_287_564_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;hash&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;strlen(str);<br></span><span style="COLOR: #008080">&nbsp;20</span><span style="COLOR: #000000"><img id=Codehighlighter1_393_530_Open_Image onclick="this.style.display='none'; Codehighlighter1_393_530_Open_Text.style.display='none'; Codehighlighter1_393_530_Closed_Image.style.display='inline'; Codehighlighter1_393_530_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_393_530_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_393_530_Closed_Text.style.display='none'; Codehighlighter1_393_530_Open_Image.style.display='inline'; Codehighlighter1_393_530_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;len;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span id=Codehighlighter1_393_530_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_393_530_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(&nbsp;hash&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;(&nbsp;str[i]&nbsp;)&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;22</span><span style="COLOR: #000000"><img id=Codehighlighter1_475_526_Open_Image onclick="this.style.display='none'; Codehighlighter1_475_526_Open_Text.style.display='none'; Codehighlighter1_475_526_Closed_Image.style.display='inline'; Codehighlighter1_475_526_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_475_526_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_475_526_Closed_Text.style.display='none'; Codehighlighter1_475_526_Open_Image.style.display='inline'; Codehighlighter1_475_526_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;(&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;hash&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0xF0000000L</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span id=Codehighlighter1_475_526_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_475_526_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;(&nbsp;x&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">24</span><span style="COLOR: #000000">&nbsp;)&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;hash&nbsp;</span><span style="COLOR: #000000">&amp;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">x&nbsp;;<br></span><span style="COLOR: #008080">&nbsp;25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;&nbsp;(hash&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0x7FFFFFFF</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;could(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[])<br></span><span style="COLOR: #008080">&nbsp;32</span><span style="COLOR: #000000"><img id=Codehighlighter1_590_1184_Open_Image onclick="this.style.display='none'; Codehighlighter1_590_1184_Open_Text.style.display='none'; Codehighlighter1_590_1184_Closed_Image.style.display='inline'; Codehighlighter1_590_1184_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_590_1184_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_590_1184_Closed_Text.style.display='none'; Codehighlighter1_590_1184_Open_Image.style.display='inline'; Codehighlighter1_590_1184_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_590_1184_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_590_1184_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j,len;<br></span><span style="COLOR: #008080">&nbsp;34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;tmp[</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">&nbsp;35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;strlen(str);<br></span><span style="COLOR: #008080">&nbsp;36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;len;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;37</span><span style="COLOR: #000000"><img id=Codehighlighter1_684_1165_Open_Image onclick="this.style.display='none'; Codehighlighter1_684_1165_Open_Text.style.display='none'; Codehighlighter1_684_1165_Closed_Image.style.display='inline'; Codehighlighter1_684_1165_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_684_1165_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_684_1165_Closed_Text.style.display='none'; Codehighlighter1_684_1165_Open_Image.style.display='inline'; Codehighlighter1_684_1165_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_684_1165_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_684_1165_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[i]&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">W</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[i]&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">O</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[i])<br></span><span style="COLOR: #008080">&nbsp;39</span><span style="COLOR: #000000"><img id=Codehighlighter1_760_800_Open_Image onclick="this.style.display='none'; Codehighlighter1_760_800_Open_Text.style.display='none'; Codehighlighter1_760_800_Closed_Image.style.display='inline'; Codehighlighter1_760_800_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_760_800_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_760_800_Closed_Text.style.display='none'; Codehighlighter1_760_800_Open_Image.style.display='inline'; Codehighlighter1_760_800_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_760_800_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_760_800_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;len;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">&nbsp;44</span><span style="COLOR: #000000"><img id=Codehighlighter1_868_1012_Open_Image onclick="this.style.display='none'; Codehighlighter1_868_1012_Open_Text.style.display='none'; Codehighlighter1_868_1012_Closed_Image.style.display='inline'; Codehighlighter1_868_1012_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_868_1012_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_868_1012_Closed_Text.style.display='none'; Codehighlighter1_868_1012_Open_Image.style.display='inline'; Codehighlighter1_868_1012_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_868_1012_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_868_1012_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[j]&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">W</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[j]&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">O</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;str[j])<br></span><span style="COLOR: #008080">&nbsp;46</span><span style="COLOR: #000000"><img id=Codehighlighter1_953_998_Open_Image onclick="this.style.display='none'; Codehighlighter1_953_998_Open_Text.style.display='none'; Codehighlighter1_953_998_Closed_Image.style.display='inline'; Codehighlighter1_953_998_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_953_998_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_953_998_Closed_Text.style.display='none'; Codehighlighter1_953_998_Open_Image.style.display='inline'; Codehighlighter1_953_998_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_953_998_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_953_998_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strncpy(tmp,str</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i,j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">i);<br></span><span style="COLOR: #008080">&nbsp;51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp[j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(NULL&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;strstr(ori_str,tmp))<br></span><span style="COLOR: #008080">&nbsp;53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;j;<br></span><span style="COLOR: #008080">&nbsp;55</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span>&lt;span style="COLOR </span></span></div>
<img src ="http://www.cppblog.com/klion/aggbug/136181.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-12-11 21:22 <a href="http://www.cppblog.com/klion/archive/2010/12/11/136181.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 4_1_3 Fence Loops</title><link>http://www.cppblog.com/klion/archive/2010/11/28/134924.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 28 Nov 2010 14:01:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/11/28/134924.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/134924.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/11/28/134924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/134924.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/134924.html</trackback:ping><description><![CDATA[<p><a href="http://www.nocow.cn/index.php/Translate:USACO/fence6">地址</a><br>题意就是求最小周长,一开始我想画成图论,然后用类似dij的算法求最小环长,可是发现两个端点会出现冲突.我一开始的思路是,把每块木板当成一个点,然后选一个端点当成出边,另外一个端点当成入边,权值等于"起点"[这里是某快木板]的长度,可是会出现冲突,样例就是一个很好的例子,会出现到了某个点是,它必须又是起始点又是终止点.那么这样就出问题了.</p>
<p><span style="color: #2708ff;">[看了官方的题解后发现原来是可以用最小环解这题的,转化为图的时候,把木板看成边,然后木板的每个端点都看成一个独立的端点,这样的话,如果两块木板相连,就把他们的端点相连,并且权为0,木板代表的边权值为木板的长度,这样的话,就可以比较好的转化成最小环问题了,具体的可以看</span><a style="color: #ff0000;" href="http://www.cppblog.com/Files/klion/4_1_3.txt">这里的附件</a><span style="color: #2708ff;">]</span><br>于是只能再想办法了,我想的是硬搜,不过不知道能不能过,但是一时没什么其他的好办法,就想这样写吧,思路如下:<br>dfs(now,use,l)其中now代表当前点,use表示哪个端点可用,l表示当前的长度.那么就比较好实现了,代码如下,当然第一次我没加注释掉的那一句<br>if(l[这个是字母l] &gt;= min) continue;然后死在第7组数据上,死了之后就想能在哪优化不,突然发现可以加上这句,因为如果当前的已经大于等于最优值了,那么这个周长就不可能比最优值还短,改了之后就过了。不过这个优化应该第一次就想到的 - -||惭愧&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: red;">我当时还有一个想法,就是记录下那些"环"已经算过,那么在这个"环"上的以其他边为起点的就不用算了,比如说1-2-3形成一个环,那么一开始以1为起点算了这个"环"的周长了,这样的话,就不用算以2 3为起点的这个"环"的长度了,不过我想不出有什么好的记录方法,所以就没加了,如果那个有什么想法的话,可以在下面写出来。<br></span></p>
<div class="source" style="color: #f5deb3; font-family: '[object]','consolas','lucida console','courier new'; background-color: #2f4f4f;" jquery1290952262772="14"><span style="color: #da70d6;">/*</span><br><span style="color: #da70d6;">&nbsp;&nbsp; ID:qcx97811</span><br><span style="color: #da70d6;">&nbsp;&nbsp; LANG:C++</span><br><span style="color: #da70d6;">&nbsp;&nbsp; PROG:fence6</span><br><span style="color: #da70d6;">*/</span><br><span style="color: #eeee00;">#include &lt;stdio.h&gt;</span><br><span style="color: #eeee00;">#include &lt;string.h&gt;</span><br><span style="color: #eeee00;">#include &lt;stdlib.h&gt;</span><br><span style="color: #eeee00;">#include &lt;math.h&gt;</span><br><br><span style="font-weight: bold; color: #98fb98;">int</span> n;<br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">][</span><span style="color: #add8e6;">3</span><span style="color: #f5deb3;">],</span><span style="color: #f5deb3;">val</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">];</span><br><span style="color: #da70d6;">//used[i][j]表示第i块的第j个端点是否已用 val[i]表示第i块的长度</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">];</span><br><span style="color: #da70d6;">//idx[i]第i个的下标</span><br><span style="font-weight: bold; color: #98fb98;">short</span> <span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">][</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">];</span><br><span style="color: #da70d6;">//num[i][j]表示第j块连在第i块的哪个端点上</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">][</span><span style="color: #add8e6;">3</span><span style="color: #f5deb3;">][</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">];</span><br><span style="color: #da70d6;">//next[i][j][k]第i块的第j个端点连着的第k个是哪块</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #add8e6;">102</span><span style="color: #f5deb3;">][</span><span style="color: #add8e6;">2</span><span style="color: #f5deb3;">];</span><br><span style="color: #da70d6;">//a[i][j]表示和第i块木板的第j个端点连在一起的一共有多少块木板</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">min</span>;<span style="color: #da70d6;">//min:最后的结果 t_min:中间的最优值</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">start</span>;<span style="color: #da70d6;">//start表示从那块木板出发</span><br><br><span style="font-weight: bold; color: #98fb98;">void</span> <span style="color: #f5deb3;">dfs</span>(<span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">,</span><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">use</span><span style="color: #f5deb3;">,</span><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">l</span>)<br><span style="color: #f5deb3;">{</span><span style="color: #da70d6;">//now:当前点的下标&nbsp; use:端点可用情况&nbsp;&nbsp; l:当前路径的长度</span><br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">j</span>;<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">t_use</span>;<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">now</span> <span style="color: #f5deb3;">==</span> <span style="color: #f5deb3;">start</span> <span style="color: #f5deb3;">&amp;&amp;</span> (<span style="color: #add8e6;">0</span> <span style="color: #f5deb3;">!=</span> <span style="color: #f5deb3;">l</span>))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><span style="color: #da70d6;">//已经找到一个 "环"</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">min</span> <span style="color: #f5deb3;">&gt;</span> <span style="color: #f5deb3;">l</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">min</span> <span style="color: #f5deb3;">=</span> <span style="color: #f5deb3;">l</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #da70d6;">//printf("%d&nbsp;&nbsp; %d\n",start,l);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">return</span> ;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">1</span>;<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">&lt;</span> <span style="color: #add8e6;">3</span>;<span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">use</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{//如果这个端点可用</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">&lt;</span> <span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">-</span><span style="color: #add8e6;">1</span><span style="color: #f5deb3;">];</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{//每举和这个端点相连的那些木板</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #add8e6;">0</span> <span style="color: #f5deb3;">==</span> <span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">]])</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{//如果接下来的那块木板和这块木板相连的这个端点可用</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">t_use</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;//算这个点的下一阶段的use值<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">0</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">==</span> <span style="color: #add8e6;">0</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">t_use</span> <span style="color: #f5deb3;">+=</span> <span style="color: #add8e6;">1</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">1</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">==</span> <span style="color: #add8e6;">0</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">t_use</span> <span style="color: #f5deb3;">+=</span> <span style="color: #add8e6;">2</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/* <span style="font-weight: bold; color: #b0c4de;">if</span>(<span style="color: #f5deb3;">l</span> <span style="color: #f5deb3;">&gt;=</span> <span style="color: #f5deb3;">min</span>) ///这里不能注释掉 注释掉就TLE&nbsp; --------------------------------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">continue</span>; *//这里&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;===================================<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">t_use</span> <span style="color: #f5deb3;">=</span> <span style="color: #f5deb3;">t_use</span><span style="color: #f5deb3;">-</span><span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">]]</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">1</span>;//改变状态<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">dfs</span>(<span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">],</span><span style="color: #f5deb3;">t_use</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">l</span><span style="color: #f5deb3;">+</span><span style="color: #f5deb3;">val</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">]);//下一阶段的搜索</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">used</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">now</span><span style="color: #f5deb3;">]]</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;//状态改回来,回溯<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br><span style="color: #f5deb3;">}</span><br><span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">main</span>(<span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">argv</span><span style="color: #f5deb3;">,</span><span style="font-weight: bold; color: #98fb98;">char</span> <span style="color: #f5deb3;">**</span><span style="color: #f5deb3;">argc</span>)<br><span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">freopen</span>(<span style="color: #7fffd4;">"fence6.in"</span><span style="color: #f5deb3;">,</span><span style="color: #7fffd4;">"r"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">stdin</span>);<br>&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">freopen</span>(<span style="color: #7fffd4;">"fence6.out"</span><span style="color: #f5deb3;">,</span><span style="color: #7fffd4;">"w"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">stdout</span>);<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #98fb98;">int</span> <span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">k</span>;<br>&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span>n);<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">&lt;</span> n;<span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">val</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">0</span><span style="color: #f5deb3;">],</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">1</span><span style="color: #f5deb3;">]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">&lt;</span> <span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">0</span><span style="color: #f5deb3;">];</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">k</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">k</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">1</span>;<span style="color: #da70d6;">//这些点连在idx[i]这块木板的第1个端点上</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">1</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">=</span> <span style="color: #f5deb3;">k</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #da70d6;">//第idx[i]块木板的第1个端点连着的第j块木板的下标是k</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">0</span>;<span style="color: #f5deb3;">j</span> <span style="color: #f5deb3;">&lt;</span> <span style="color: #f5deb3;">a</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">1</span><span style="color: #f5deb3;">];</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">scanf</span>(<span style="color: #7fffd4;">"%d"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">&amp;</span><span style="color: #f5deb3;">k</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">num</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #f5deb3;">k</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">2</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">next</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">idx</span><span style="color: #f5deb3;">[</span><span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">]][</span><span style="color: #add8e6;">2</span><span style="color: #f5deb3;">][</span><span style="color: #f5deb3;">j</span><span style="color: #f5deb3;">]</span> <span style="color: #f5deb3;">=</span> <span style="color: #f5deb3;">k</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #da70d6;">//注释和上面相似 不过这里是第idx[i]块木板的第2个端点</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span>&nbsp;&nbsp;&nbsp; <br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">min</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">999999999</span>;//初始化min<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">for</span>(<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">=</span> <span style="color: #add8e6;">1</span>;<span style="color: #f5deb3;">i</span> <span style="color: #f5deb3;">&lt;=</span> n;<span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">start</span> <span style="color: #f5deb3;">=</span> <span style="color: #f5deb3;">i</span>;//start用来判断是否已经是个"环"了<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">dfs</span>(<span style="color: #f5deb3;">i</span><span style="color: #f5deb3;">,</span><span style="color: #add8e6;">3</span><span style="color: #f5deb3;">,</span><span style="color: #add8e6;">0</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">}</span><br>&nbsp;&nbsp;&nbsp; <span style="color: #f5deb3;">printf</span>(<span style="color: #7fffd4;">"%d</span><span style="color: #7fffd4;">\n</span><span style="color: #7fffd4;">"</span><span style="color: #f5deb3;">,</span><span style="color: #f5deb3;">min</span>);<br>&nbsp;&nbsp;&nbsp; <span style="font-weight: bold; color: #b0c4de;">return</span> <span style="color: #add8e6;">0</span>;<br><span style="color: #f5deb3;">}</span><br></div><img src ="http://www.cppblog.com/klion/aggbug/134924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-11-28 22:01 <a href="http://www.cppblog.com/klion/archive/2010/11/28/134924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 4_1_1 Beef McNuggets</title><link>http://www.cppblog.com/klion/archive/2010/11/26/134743.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 26 Nov 2010 10:36:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/11/26/134743.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/134743.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/11/26/134743.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/134743.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/134743.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/nuggets">题目意思</a><br>我的想法:首先把一些能表达的数给算出来,存起来.然后再看是不是都能表示或者没有最大值.算出能表达的数我采用的是dp.这里的dp,比如说有给你三个数3 6 10要你求用这三个数能表达的一系列数,首先我用一个数组can[]记录所有能表达的数,can[i]=j表示这些能表达的数按升序排列地i个是j.再用数组记录下3 6 10这三个数和can数组里面的某个数相加时所到的下表(说的很拗口- -)<br>比如说我用idx[0]记录3这个数和can数组的第idx[0]个数相加,idx[1]表示6和can数组的第idx[1]个数相加.等等。下面用具体写下过程.<br>首先置can[0] = 0&nbsp; idx[0] = idx[1] = idx[2] = 0;(也就是说3 6 10接下来会和can数组的第0个相加)<br>下标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; can&nbsp;&nbsp; 0&nbsp;&nbsp; 3(3+can[0])&nbsp; 6(3+can[1]/6+can[0])&nbsp; 9(3+can[2]/6+can[1])&nbsp;&nbsp; 10(10+can[0])&nbsp;&nbsp; 12(3+can[3]/6+can[2])&nbsp; <br>3&nbsp;&nbsp; idx[0]&nbsp;&nbsp; 0&nbsp; 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 3 &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>6&nbsp;&nbsp; idx[1]&nbsp;&nbsp; 0&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>10 idx[2]&nbsp;&nbsp; 0&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>中间我还加了些东西,也就是说如果只有一个元素的话,那么一定是输出0的(要不是都能表示[这个数是1]要不是无最大值)<br>如果有一个元素是1的话,那么一定输出0(所有的都能表示)<br>如果只有两个数的话,那么我们可以直接得到答案,如果两个数互素的话,结果是a*b-a-b,如果不互素的话输出0(无最大值)<br>如果是等差数列的话,输出0(无最大值)<br>其他的就直接算出能表示的数,再判断输出什么<br>官方的解题报告说 <span style="COLOR: red">只要所有的数的gcd不是1就没有最大值</span>,其实这一点可以由上面2个数的公式推出来,也就是先求前n-1个数的gcd然后再求gcd和第n个数的gcd,那么这样的话,这题还有一个数论方法,也就是直接算前n-1个数的gcd,然后看这个gcd和第n个数的gcd是否为1,不为1就输出0,为1就用a*b-a-b这个公式算<br>代码如下&nbsp;&nbsp;&nbsp;&nbsp;
<div class=source style="COLOR: #f5deb3; FONT-FAMILY: '[object htmloptionelement]','consolas','lucida console','courier new'; BACKGROUND-COLOR: #2f4f4f"><span style="COLOR: #da70d6">/*</span><br><span style="COLOR: #da70d6">&nbsp;&nbsp;&nbsp; ID:qcx97811</span><br><span style="COLOR: #da70d6">&nbsp;&nbsp;&nbsp; LANG:C++</span><br><span style="COLOR: #da70d6">&nbsp;&nbsp;&nbsp; PROG:nuggets</span><br><span style="COLOR: #da70d6">*/</span><br><span style="COLOR: #eeee00">#include &lt;stdio.h&gt;</span><br><span style="COLOR: #eeee00">#include &lt;string.h&gt;</span><br><span style="COLOR: #eeee00">#include &lt;stdlib.h&gt;</span><br><span style="COLOR: #eeee00">#include &lt;math.h&gt;</span><br><br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> n;<br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">16</span><span style="COLOR: #f5deb3">];</span><br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">16</span><span style="COLOR: #f5deb3">],</span><span style="COLOR: #f5deb3">total_idx</span>;<br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">2000000</span><span style="COLOR: #f5deb3">];</span><br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">cmp</span>(<span style="FONT-WEIGHT: bold; COLOR: #b0c4de">const</span> <span style="FONT-WEIGHT: bold; COLOR: #98fb98">void</span> <span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">a</span><span style="COLOR: #f5deb3">,</span><span style="FONT-WEIGHT: bold; COLOR: #b0c4de">const</span> <span style="FONT-WEIGHT: bold; COLOR: #98fb98">void</span> <span style="COLOR: #f5deb3">*</span>b)<br><span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//快速排序从小到大模板</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">c</span> <span style="COLOR: #f5deb3">=</span> (<span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">*</span>)<span style="COLOR: #f5deb3">a</span>;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">d</span> <span style="COLOR: #f5deb3">=</span> (<span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">*</span>)b;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">c</span> <span style="COLOR: #f5deb3">&gt;</span> <span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">d</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">1</span>;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">c</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">d</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span>;&nbsp;&nbsp;&nbsp; <br><span style="COLOR: #f5deb3">}</span><br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">gcd</span>(<span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">a</span><span style="COLOR: #f5deb3">,</span><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> b)<br><span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//公约数</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">tmp</span>;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">a</span> <span style="COLOR: #f5deb3">&lt;</span> b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">a</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">a</span> <span style="COLOR: #f5deb3">=</span> b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b <span style="COLOR: #f5deb3">=</span><span style="COLOR: #f5deb3">tmp</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">while</span>(b)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">a</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">a</span> <span style="COLOR: #f5deb3">=</span> b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; b <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">tmp</span><span style="COLOR: #f5deb3">%</span>b;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #f5deb3">a</span>;<br><span style="COLOR: #f5deb3">}</span><br><span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">main</span>(<span style="FONT-WEIGHT: bold; COLOR: #98fb98">void</span>)<br><span style="COLOR: #f5deb3">{</span><br>&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">freopen</span>(<span style="COLOR: #7fffd4">"nuggets.in"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #7fffd4">"r"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">stdin</span>);<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">freopen</span>(<span style="COLOR: #7fffd4">"nuggets.out"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #7fffd4">"w"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">stdout</span>);<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">j</span>;<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #98fb98">int</span> <span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">tmp</span>;<br>&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">scanf</span>(<span style="COLOR: #7fffd4">"%d"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">&amp;</span>n);<br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">for</span>(<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">0</span>;<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">&lt;</span> n;<span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//scanf</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">scanf</span>(<span style="COLOR: #7fffd4">"%d"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">&amp;</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">qsort</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">,</span>n<span style="COLOR: #f5deb3">,</span><span style="FONT-WEIGHT: bold; COLOR: #b0c4de">sizeof</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]),</span><span style="COLOR: #f5deb3">cmp</span>);<span style="COLOR: #da70d6">//sort the number</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>((<span style="COLOR: #add8e6">1</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">])</span> || (<span style="COLOR: #add8e6">1</span> <span style="COLOR: #f5deb3">==</span> n))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//only one num or an one in the num</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"0</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span> <br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">memset</span>(<span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">,</span><span style="FONT-WEIGHT: bold; COLOR: #b0c4de">sizeof</span>(<span style="COLOR: #f5deb3">idx</span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">memset</span>(<span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">,</span><span style="FONT-WEIGHT: bold; COLOR: #b0c4de">sizeof</span>(<span style="COLOR: #f5deb3">can</span>));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #add8e6">2</span> <span style="COLOR: #f5deb3">==</span> n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//2个数的话可以直接算出来</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #add8e6">1</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #f5deb3">gcd</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">],</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]))</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//如果互素的话</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"%d</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">*</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]);</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">else</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//不互素 肯定无</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"0</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">-</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">for</span>(<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">2</span>;<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">&lt;</span> n;<span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//看是否为等差数列</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">!=</span> <span style="COLOR: #f5deb3">tmp</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">break</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">==</span> n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//如果是等差数列的话 也不可能有</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"0</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span>);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">total_idx</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">for</span>(<span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">];</span><span style="COLOR: #f5deb3">i</span> <span style="COLOR: #f5deb3">&lt;</span> <span style="COLOR: #add8e6">2000000</span>;<span style="COLOR: #f5deb3">i</span><span style="COLOR: #f5deb3">++</span> )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//下标是为了不超过内存16M 同时最大</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">j</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">0</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">for</span>(<span style="COLOR: #f5deb3">k</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">1</span>;<span style="COLOR: #f5deb3">k</span> <span style="COLOR: #f5deb3">&lt;</span> n;<span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//增大能表示的数</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">]]</span><span style="COLOR: #f5deb3">&lt;</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">j</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">j</span><span style="COLOR: #f5deb3">]])</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">j</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">k</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">j</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">j</span><span style="COLOR: #f5deb3">]];</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">++</span><span style="COLOR: #f5deb3">total_idx</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">tmp</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">total_idx</span> <span style="COLOR: #f5deb3">&gt;</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span> <span style="COLOR: #f5deb3">&amp;&amp;</span> (<span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">total_idx</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">total_idx</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span>))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//如果已经找到最大数,因为后面的数都连续了</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #f5deb3">total_idx</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #add8e6">0</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #add8e6">1</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">while</span>(<span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">tmp</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">-</span> <span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">tmp</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span><span style="COLOR: #f5deb3">]</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #add8e6">1</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//寻找最大的数</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">tmp</span><span style="COLOR: #f5deb3">--</span>;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"%d</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span><span style="COLOR: #f5deb3">,</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">tmp</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">-</span><span style="COLOR: #add8e6">1</span>);<span style="COLOR: #da70d6">//输出最大数</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">for</span>(<span style="COLOR: #f5deb3">k</span> <span style="COLOR: #f5deb3">=</span> <span style="COLOR: #add8e6">0</span>;<span style="COLOR: #f5deb3">k</span> <span style="COLOR: #f5deb3">&lt;</span> n;<span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">++</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">{</span><span style="COLOR: #da70d6">//改变相应的下标</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">if</span>(<span style="COLOR: #f5deb3">num</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">+</span><span style="COLOR: #f5deb3">can</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">]]</span> <span style="COLOR: #f5deb3">==</span> <span style="COLOR: #f5deb3">tmp</span>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">idx</span><span style="COLOR: #f5deb3">[</span><span style="COLOR: #f5deb3">k</span><span style="COLOR: #f5deb3">]</span><span style="COLOR: #f5deb3">++</span>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br><span style="COLOR: #da70d6">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i = 0;i &lt;= total_idx;i++)</span><br><span style="COLOR: #da70d6">//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n",can[i]); </span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">printf</span>(<span style="COLOR: #7fffd4">"0</span><span style="COLOR: #7fffd4">\n</span><span style="COLOR: #7fffd4">"</span>);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="COLOR: #f5deb3">}</span><br>&nbsp;&nbsp;&nbsp; <span style="FONT-WEIGHT: bold; COLOR: #b0c4de">return</span> <span style="COLOR: #add8e6">0</span>;<br><span style="COLOR: #f5deb3">}</span><br></div>
&nbsp; 
<img src ="http://www.cppblog.com/klion/aggbug/134743.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-11-26 18:36 <a href="http://www.cppblog.com/klion/archive/2010/11/26/134743.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_3_4 Home On The Range</title><link>http://www.cppblog.com/klion/archive/2010/08/13/123381.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 13 Aug 2010 13:48:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/13/123381.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/123381.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/13/123381.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/123381.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/123381.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/range">题意</a><br>思路:DP.<br>一开始我用二维树状数组去搞。死在最优一组数据上(全1)。因为那样有很多浪费的操作。可是想不出什么好办法，无奈问了好多人。diy群的神牛们一致说dp,baihacker大神的做法好像就这样的.水平太弱,听不懂。后来还是在一个朋友的指点下领悟了dp的思想。具体如下<br>设dp[i][j] 为以(i,j)为左上角的符合情况的边的最大长度。那么我们可以得到长度为k的方阵的个数等于那些dp[i][j]&gt;=k的个数。<br>用样例来说的话<br>&nbsp; dp[i][j]如下<br>&nbsp; 1 0 4 2 3 1<br>&nbsp; 0 0 3 3 2 1<br>&nbsp; 1 1 2 2 2 1<br>&nbsp; 0 0 2 1 1 1<br>&nbsp; 0 0 1 1 0 1<br>&nbsp; 1 1 1 0 0 1<br>&nbsp; 那么2的个数就是dp[i][j] &gt;= 2的数目也就是6(2的个数)+3(3的个数)+1(4的个数)=10<br>&nbsp; 3和4同理<br>&nbsp; 那么现在要求的就是所有dp[i][j]了。我们可以得到如下转移方程。<br>&nbsp; if(0 == num[i][j])/*num存的是原矩阵*/<br>&nbsp;&nbsp; dp[i][j] = 0;/*矩阵含0不符合情况*/<br>&nbsp;else<br>&nbsp; dp[i][j] = min(dp[i+1][j],dp[i][j+1],dp[i+1][j+1])+1;<br>&nbsp;到这里基结束了。官方的有两种做法，也都是dp。第一种是n^3的,这里就不说了。第二种是n^2的。而且空间也比较小，这里贴下。<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_214746 onclick="this.style.display='none'; Code_Closed_Text_214746.style.display='none'; Code_Open_Image_214746.style.display='inline'; Code_Open_Text_214746.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_214746 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_214746.style.display='none'; Code_Closed_Image_214746.style.display='inline'; Code_Closed_Text_214746.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_214746 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">官方</span><span id=Code_Open_Text_214746 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Greg&nbsp;Price&nbsp;writes:&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>The&nbsp;posted&nbsp;solution&nbsp;runs&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;cubic&nbsp;time,&nbsp;with&nbsp;quadratic&nbsp;storage.&nbsp;With&nbsp;a&nbsp;little&nbsp;more&nbsp;cleverness&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;dynamic&nbsp;programming,&nbsp;the&nbsp;task&nbsp;can&nbsp;be&nbsp;accomplished&nbsp;with&nbsp;only&nbsp;quadratic&nbsp;time&nbsp;and&nbsp;linear&nbsp;storage,&nbsp;and&nbsp;the&nbsp;same&nbsp;amount&nbsp;of&nbsp;code&nbsp;and&nbsp;coding&nbsp;effort.&nbsp;Instead&nbsp;of&nbsp;running&nbsp;back&nbsp;along&nbsp;the&nbsp;rows&nbsp;and&nbsp;columns&nbsp;from&nbsp;each&nbsp;square,&nbsp;we&nbsp;use&nbsp;the&nbsp;biggest</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">square&nbsp;values&nbsp;immediately&nbsp;to&nbsp;the&nbsp;west&nbsp;and&nbsp;north,&nbsp;so&nbsp;that&nbsp;each&nbsp;non</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">ravaged&nbsp;square</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">s&nbsp;biggest-square&nbsp;value&nbsp;is&nbsp;one&nbsp;more&nbsp;than&nbsp;the&nbsp;minimum&nbsp;of&nbsp;the&nbsp;values&nbsp;to&nbsp;the&nbsp;west,&nbsp;north,&nbsp;and&nbsp;northwest.&nbsp;This&nbsp;saves&nbsp;time,&nbsp;bringing&nbsp;us&nbsp;from&nbsp;cubic&nbsp;to&nbsp;quadratic&nbsp;time.&nbsp;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Another&nbsp;improvement,&nbsp;which&nbsp;saves&nbsp;space&nbsp;and&nbsp;perhaps&nbsp;cleans&nbsp;up&nbsp;the&nbsp;code&nbsp;marginally,&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;to&nbsp;keep&nbsp;track&nbsp;of&nbsp;the&nbsp;number&nbsp;of&nbsp;squares&nbsp;of&nbsp;a&nbsp;given&nbsp;size&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;we&nbsp;go&nbsp;along.&nbsp;This&nbsp;obviates&nbsp;the&nbsp;need&nbsp;to&nbsp;keep&nbsp;a&nbsp;quadratic</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">size&nbsp;matrix&nbsp;of&nbsp;biggest</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">square&nbsp;values,&nbsp;because&nbsp;we&nbsp;only&nbsp;need&nbsp;the&nbsp;most&nbsp;recent&nbsp;row&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;continuing&nbsp;the&nbsp;computation.&nbsp;As&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ravaged</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;values,&nbsp;we&nbsp;only&nbsp;use&nbsp;each&nbsp;one&nbsp;once,&nbsp;all&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;order;&nbsp;we&nbsp;can&nbsp;just&nbsp;read&nbsp;those&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;we&nbsp;need&nbsp;them.&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">fstream.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>ifstream&nbsp;fin(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">range.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>ofstream&nbsp;fout(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">range.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;maxn&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">250</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;n;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;fieldpr;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;sq[maxn];&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;biggest-square&nbsp;values</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;sqpr;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;numsq[maxn];&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;number&nbsp;of&nbsp;squares&nbsp;of&nbsp;each&nbsp;size</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>min3(unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;a,&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;b,&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;c)<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img id=Codehighlighter1_1368_1443_Open_Image onclick="this.style.display='none'; Codehighlighter1_1368_1443_Open_Text.style.display='none'; Codehighlighter1_1368_1443_Closed_Image.style.display='inline'; Codehighlighter1_1368_1443_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1368_1443_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1368_1443_Closed_Text.style.display='none'; Codehighlighter1_1368_1443_Open_Image.style.display='inline'; Codehighlighter1_1368_1443_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1368_1443_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1368_1443_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;((a&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;b)&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;c))<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;(b&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;c)&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;b&nbsp;:&nbsp;c;<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>main()<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_1458_2179_Open_Image onclick="this.style.display='none'; Codehighlighter1_1458_2179_Open_Text.style.display='none'; Codehighlighter1_1458_2179_Closed_Image.style.display='inline'; Codehighlighter1_1458_2179_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1458_2179_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1458_2179_Closed_Text.style.display='none'; Codehighlighter1_1458_2179_Open_Image.style.display='inline'; Codehighlighter1_1458_2179_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1458_2179_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1458_2179_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;r,&nbsp;c;<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;i;<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;unsigned&nbsp;</span><span style="COLOR: #0000ff">short</span><span style="COLOR: #000000">&nbsp;tmp;<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;n;<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;c&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;c</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sq[c]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numsq[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(r&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;r&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;r</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img id=Codehighlighter1_1645_2001_Open_Image onclick="this.style.display='none'; Codehighlighter1_1645_2001_Open_Text.style.display='none'; Codehighlighter1_1645_2001_Closed_Image.style.display='inline'; Codehighlighter1_1645_2001_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1645_2001_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1645_2001_Closed_Text.style.display='none'; Codehighlighter1_1645_2001_Open_Image.style.display='inline'; Codehighlighter1_1645_2001_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1645_2001_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1645_2001_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqpr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sq[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;c&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;c</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img id=Codehighlighter1_1701_1998_Open_Image onclick="this.style.display='none'; Codehighlighter1_1701_1998_Open_Text.style.display='none'; Codehighlighter1_1701_1998_Closed_Image.style.display='inline'; Codehighlighter1_1701_1998_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1701_1998_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1701_1998_Closed_Text.style.display='none'; Codehighlighter1_1701_1998_Open_Image.style.display='inline'; Codehighlighter1_1701_1998_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1701_1998_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1701_1998_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;fieldpr;<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">(fieldpr&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img id=Codehighlighter1_1750_1802_Open_Image onclick="this.style.display='none'; Codehighlighter1_1750_1802_Open_Text.style.display='none'; Codehighlighter1_1750_1802_Closed_Image.style.display='inline'; Codehighlighter1_1750_1802_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1750_1802_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1750_1802_Closed_Text.style.display='none'; Codehighlighter1_1750_1802_Open_Image.style.display='inline'; Codehighlighter1_1750_1802_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1750_1802_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1750_1802_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqpr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sq[c];<br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sq[c]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Only&nbsp;three&nbsp;values&nbsp;needed.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">59</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;min3(sq[c</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],&nbsp;sqpr,&nbsp;sq[c]);<br></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sqpr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sq[c];<br></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sq[c]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tmp;<br></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Only&nbsp;count&nbsp;maximal&nbsp;squares,&nbsp;for&nbsp;now.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">64</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(sq[c]&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numsq[&nbsp;sq[c]&nbsp;]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">69</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;Count&nbsp;all&nbsp;squares,&nbsp;not&nbsp;just&nbsp;maximal.&nbsp;</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">70</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">71</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;numsq[i]&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;numsq[i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">72</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">73</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;numsq[i];&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">74</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;numsq[i]&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br></span><span style="COLOR: #008080">75</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">76</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">77</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">78</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
<img src ="http://www.cppblog.com/klion/aggbug/123381.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-13 21:48 <a href="http://www.cppblog.com/klion/archive/2010/08/13/123381.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_3_1 Riding The Fences</title><link>http://www.cppblog.com/klion/archive/2010/08/13/123314.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 13 Aug 2010 03:54:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/13/123314.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/123314.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/13/123314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/123314.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/123314.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/fence">题意</a><br>一道很裸的欧拉路径题。基本上只要知道欧拉路径的算法就可以过的。而且顶点和边数也不多。直接矩阵存就ok了。<br>对于欧拉路径的算法，<a href="http://www.cppblog.com/Files/klion/Eulerian_Tour.doc">请看这</a>(英文的,本来是网页的,不过CPP说不能传那种格式的,凑合着看吧)<br>有一点就是注意重边的情况,也就是存边和删边时不能单纯的置为1和置为0，而应该是用++和--来代替.不然重边不好处理。<br><a href="http://u.115.com/file/f9e61ee149">这里</a>上传了欧拉路径的那个HTML网页
<img src ="http://www.cppblog.com/klion/aggbug/123314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-13 11:54 <a href="http://www.cppblog.com/klion/archive/2010/08/13/123314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_3_5 A Game</title><link>http://www.cppblog.com/klion/archive/2010/08/12/123250.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Thu, 12 Aug 2010 13:39:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/12/123250.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/123250.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/12/123250.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/123250.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/123250.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题意思路:DP.这题一开始认为是dp，无奈不会表示状态,于是一度认为是个博弈题(不知算不算博弈- -),上网一顿狂搜博弈,搜了好久也没发现这题的简化版之类的，不懂博弈的表示压力很大~~。后来突然想到了一个比较笨的办法,就是用两个函数在那调来调去。也就是一个递归(发现一个函数也可以- -!)。写出来一交TLE在第4组。又加了个记忆化，终于过了。每组数据的时间都在0.1S左右。标称的三种方法都很简短,...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/08/12/123250.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/123250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-12 21:39 <a href="http://www.cppblog.com/klion/archive/2010/08/12/123250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_2_2 Stringsobits</title><link>http://www.cppblog.com/klion/archive/2010/08/11/123053.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Wed, 11 Aug 2010 04:48:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/11/123053.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/123053.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/11/123053.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/123053.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/123053.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/kimbits">题意</a><br>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;我过的是比较幸运的。首先我用一个二维数组f[][]存下某些状态,其中f[i][j]表示长度为i,1的个数不超过j的数目。然后如果某个数小于2^L,那么肯定输出原数,如果不是再特殊处理,找到第一个f[i][L]比I大的i。然后比较I和f[i][L],f[i-1][L]其中哪个近,离哪个近就从那边开始搜。一直搜到结果为止,这样能过,但是险过。有一组数据用时0.9+S。其中还有一些要注意的就是用long&nbsp;long。也就是如果测试数据有31&nbsp;31的话,不用long&nbsp;long&nbsp;会超数据范围。(我大致算了下,我这种写法,极限数据应该会超过1S,那样的话必挂无疑。但是好像usaco的数据没这种)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;官方的：首先也是处理一个和我的一样的二维数组。不过后面明显比我的要好,标称是用递归写的,直接输出。</span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">void printbits(int&nbsp;nbits,&nbsp;int&nbsp;nones,&nbsp;double&nbsp;index) </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">{</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*nbits&nbsp;表示剩下的要处理的长度&nbsp;&nbsp;nones&nbsp;表示剩下的1的个数&nbsp;&nbsp;index表示第多少个*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"> &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">double&nbsp;s; &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">if(nbits&nbsp;==&nbsp;0)</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*处理完成*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">return; &nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">s&nbsp;=&nbsp;sizeofset[nbits-1][nones];</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*得到f[bits-1][nones]*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;if(s&nbsp;&lt;=&nbsp;index)&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">{</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*如果index大于这个f值*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fout,&nbsp;"1");</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*那么这位肯定是1&nbsp;*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">printbits(nbits-1,&nbsp;nones-1,&nbsp;index-s);</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*改变相应的状态&nbsp;继续输出&nbsp;&nbsp;长度-1,1的个数-1&nbsp;index-s&nbsp;这里这个index-s有点像10进制化2进制*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"> &nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;}&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">lse</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">{ &nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fout,&nbsp;"0"); </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*小于这个f值这位肯定为0*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printbits(nbits-1,&nbsp;nones,&nbsp;index);</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">/*改变相应的状态继续输出&nbsp;&nbsp;长度-1&nbsp;1的个数不减&nbsp;index也不变*/</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">}</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;</span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"> } </span><span style="FONT-SIZE: 12pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
还是修炼不够啊。。。。<!--endfragment--> 
<img src ="http://www.cppblog.com/klion/aggbug/123053.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-11 12:48 <a href="http://www.cppblog.com/klion/archive/2010/08/11/123053.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_2_6 Sweet Butter----最短路</title><link>http://www.cppblog.com/klion/archive/2010/08/10/122948.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Tue, 10 Aug 2010 08:44:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/10/122948.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/122948.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/10/122948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/122948.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/122948.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/butter">题意</a><br>一开始我想用Floyd去水水，发现水不过,第7组0.8S，第8组数据1.56S。于是想着用spfa去搞。<br>发现spfa原来这个好写,不过中间由于大错一个下标导致了1h的悲剧。。。至于spfa的介绍就不必我来说了吧，网上一搜一大把。<br>用spfa搞出来的最后一组数据用时0.19S。还过得去，不过网上有人说用spfa还可以优化，就是根据已经算出来的最短路来优化还没算出的最短路，具体实现我不是很懂，<a href="http://dantvt.spaces.live.com/blog/cns!D87988A6CAC0A480!775.entry">给个链接</a>，有兴趣的看看。(这个链接里还有几种最短路的算法效率的比较)<br>还有就是可以用heap+dij,不过这个heap最好还是自己手写，想偷懒用stl的东西有时是要以时间为代价的。有时用stl的优先队列来搞的话会超时，但是自己手写堆的话，可能会比较理想。标称给的就是heap+dij.具体实现nocow上应该有，这里就不贴了。
<img src ="http://www.cppblog.com/klion/aggbug/122948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-10 16:44 <a href="http://www.cppblog.com/klion/archive/2010/08/10/122948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 3_1_4 Shaping Regions</title><link>http://www.cppblog.com/klion/archive/2010/08/04/122219.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Wed, 04 Aug 2010 08:49:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/08/04/122219.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/122219.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/08/04/122219.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/122219.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/122219.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 题意&nbsp;&nbsp;&nbsp;&nbsp; 一开始想到用二维线段树，但是我没写过二维的，只写过一维的。后来问了下别人，说一维也行(一开始我也想到是不是可以用一维的,但是很快就被我自己给否定了,我认为那样时间会不够的,后来再第11个点还真的不够)。于是就写了一个一维的线段树。把每一行进行一次线段树操作。这样空间也可以开出来，变成复杂度也不高。可是交上去之后在第11个点超时了。给的是2S,我...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/08/04/122219.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/122219.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-08-04 16:49 <a href="http://www.cppblog.com/klion/archive/2010/08/04/122219.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_3_5  Controlling Companies</title><link>http://www.cppblog.com/klion/archive/2010/07/19/120778.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Mon, 19 Jul 2010 07:11:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/19/120778.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120778.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/19/120778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120778.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120778.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/concom">题意</a><br>思路:一直做松弛操作,每一次松弛操作把本次能够确定的控制关系确定下来,也就是i控制j。退出条件就是某一次松弛操作没有出现新的控制关系,由于本次没有出现新的控制关系,那么接下的每一次都不会出现新的控制关系,于是可以退出。<br>有一点要注意的就是:如果(i,j,p)中p为100那么就是说公司i和公司j的控制关系应该是一样的。<br>
<img src ="http://www.cppblog.com/klion/aggbug/120778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-19 15:11 <a href="http://www.cppblog.com/klion/archive/2010/07/19/120778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_2_4 Party Lamps</title><link>http://www.cppblog.com/klion/archive/2010/07/18/120699.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 18 Jul 2010 07:49:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/18/120699.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120699.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/18/120699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120699.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120699.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/lamps">题意</a><br>
<p><span>这题可以用搜索，但是肯定会超时，毕竟最多<span>100</span>盏灯，<span>10000</span>次按压。这些可不是小数目，不过我们可以知道，对于每一盏灯，按压两次的效果和不按压的效果是一样的。这样一共才四盏灯，也就是我们只要枚举<span>16</span>种情况就<span>OK</span>了。当然达到目标状态后，我们还得看剩下的次数能否是灯的状态不发生改变。通过观察发现，可以没盏灯两次所有的灯的状态不发生改变，还有就是可以改变<span>1,2,3</span>这三盏灯，所有灯的状态也不会发生改变。然后我们看剩下的灯是不是可以由<span>n</span>个<span>2</span>和<span>m</span>个<span>3(n,m</span>可以为<span>0)</span>相加得到。如果可以的话，那么这个状态就可以，记录下来。最后我们要先排序，由于<span>qsort</span>函数对二维数组排序不熟，所有采用的是冒泡排序，不过这最多也就是<span>16</span>个元素，所以还是很快的。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>看了<span>Analysis</span>之后发现可以简化到只考虑前<span>6</span>盏灯，因为<span>LCM(1,2,2,3)=6.</span>也就是开关<span>1</span>影响的是每次加<span>1</span>的灯，相应的<span>2 2 3.</span>所以超过<span>6</span>的都可以由前<span>6</span>盏灯得到。这样的话应该还可以把<span>6</span>位二进制转化成<span>10</span>进制然后用<span>qsort</span>快排一下。输出也好办，一般循环输出前<span>6</span>种状态直到输出<span>n</span>位为止。<br>&nbsp;&nbsp; 相应的可以看<a href="http://www.nocow.cn/index.php/USACO/lamps">nocow上的题解</a></span></p>
<img src ="http://www.cppblog.com/klion/aggbug/120699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-18 15:49 <a href="http://www.cppblog.com/klion/archive/2010/07/18/120699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_2_2 Subset Sums</title><link>http://www.cppblog.com/klion/archive/2010/07/16/120587.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 16 Jul 2010 13:49:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/16/120587.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120587.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/16/120587.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120587.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120587.html</trackback:ping><description><![CDATA[<a href="http://www.nocow.cn/index.php/Translate:USACO/subset">题意</a><br>做法:DP<br>思路:<span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold">设<span lang=EN-US>f[i][j]</span>表示前<span lang=EN-US>i</span>个数能得到<span lang=EN-US>j</span>的集合数<span lang=EN-US>(</span>当然这里每一个结果都多算了一次<span lang=EN-US>,</span>因为两个想等的结果的两个集合都算了<span lang=EN-US>,比如说前3个数,有{1,2}和{3}但是如果输入3的话,结果只能输出1.</span>不过这没事<span lang=EN-US>,</span>因为<span style="COLOR: blue">每个</span>都多算了一次<span lang=EN-US>,</span>最后的结果只要除<span lang=EN-US>2</span>就行了<span lang=EN-US>),f[i][j](0&lt;=j&lt;=(i+1)*i/2)</span>可以由<span lang=EN-US>f[i-1][k]</span>得到<br></span><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold">转移方程<span lang=EN-US>:<o:p></o:p></span></span>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for i = 2 to n<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>f[i][i] =1;/*这选自己*/<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>j = i &#8211; 1;<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>for k = 0<span style="mso-spacerun: yes">&nbsp; </span>to (j+1)*j/2&nbsp; /*f[i][k] &lt;----f[i-1][k] f[i][i+k] &lt;-----f[i-1][k]*/<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>if(f[j][k] &gt; 0)<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>f[i][k] += f[j][k];<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold"><span style="mso-spacerun: yes">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>f[i][k+i] += f[j][k];<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 29.95pt; TEXT-INDENT: -12pt; mso-para-margin-left: 1.71gd; mso-char-indent-count: -1.0"><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: Arial; mso-font-kerning: 0pt; mso-bidi-font-weight: bold">最后还有一点就是<span lang=EN-US>N = 39</span>时结果很大要用<span lang=EN-US>long long</span>或者<span lang=EN-US>__int64</span>存<span lang=EN-US><o:p></o:p></span></span></p>
<img src ="http://www.cppblog.com/klion/aggbug/120587.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-16 21:49 <a href="http://www.cppblog.com/klion/archive/2010/07/16/120587.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_1_1 The Castle</title><link>http://www.cppblog.com/klion/archive/2010/07/13/120226.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Tue, 13 Jul 2010 07:42:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/13/120226.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120226.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/13/120226.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120226.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120226.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这题是2_1我最后一个A的题，也是2_1我觉得最难的题(就算不是最难，我也觉得是最烦的，一开始题意都不懂-_-!).我一开始不知道怎么去推到那扇墙，后来看了nocow的翻译，还有NAROTOACM牛的提示，才知道点点意思，感觉可做，今天上午就献给它了。想法不算太难，就是我感觉好繁啊。一开始还是推倒那扇墙出问题了，后来这里不出问题了，下标又越界了，再后来就是MLE了，最后用short过的。交了10+...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/07/13/120226.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/120226.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-13 15:42 <a href="http://www.cppblog.com/klion/archive/2010/07/13/120226.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_1_5 Health Holsteins</title><link>http://www.cppblog.com/klion/archive/2010/07/12/120125.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Mon, 12 Jul 2010 07:46:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/12/120125.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120125.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/12/120125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120125.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120125.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这题想通了很简单，不过难的就是想的过程，我想了一个上午，由于没有去重超时了，后来还是同学点拨才过的，用数组模拟组合，当数组的某个元素a[i]=1时表示选取第(i-1)(或者i，这里看数组的下标从0开始还是从1开始)个，a[i] = 0表示不选第(i-1)个。然后再在符合情况的组合中选取元素最少的(也就是步数最少的)。官方的报告和这一样的思路官方Code highlighting produce...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/07/12/120125.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/120125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-12 15:46 <a href="http://www.cppblog.com/klion/archive/2010/07/12/120125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_1_4 Hamming Codes</title><link>http://www.cppblog.com/klion/archive/2010/07/11/120084.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 11 Jul 2010 06:05:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/11/120084.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120084.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/11/120084.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120084.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120084.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这题理解题意之后就是一简单的dfs,是每一个都相差不小于d。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先选取一个起始点，然后对于这个点进行dfs寻找，当找到了或者不可能找到时返回，中间的相差不小于d可以把两个数换成二进制然后再比较不同的位置。实现也不算难<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 官方的如下，官方的就是先求出每两个数的二进制的位差，以免后面再重复求<br>&nbsp;&nbsp;&nbsp;&nbsp; </p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_140442 onclick="this.style.display='none'; Code_Closed_Text_140442.style.display='none'; Code_Open_Image_140442.style.display='inline'; Code_Open_Text_140442.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_140442 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_140442.style.display='none'; Code_Closed_Image_140442.style.display='inline'; Code_Closed_Text_140442.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_140442 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">官方</span><span id=Code_Open_Text_140442 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">There&nbsp;are&nbsp;only&nbsp;a&nbsp;few&nbsp;tools&nbsp;we&nbsp;need&nbsp;to&nbsp;solve&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">&nbsp;problem.&nbsp;First&nbsp;of&nbsp;all,&nbsp;we&nbsp;can&nbsp;use&nbsp;basic&nbsp;techniques&nbsp;to&nbsp;find&nbsp;the&nbsp;Nth&nbsp;bit&nbsp;of&nbsp;a&nbsp;number&nbsp;M:&nbsp;counting&nbsp;the&nbsp;least&nbsp;significant&nbsp;bit&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;bit&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;the&nbsp;next&nbsp;bit&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;bit&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;etc.,&nbsp;we&nbsp;can&nbsp;find&nbsp;the&nbsp;value&nbsp;of&nbsp;that&nbsp;bit&nbsp;through&nbsp;the&nbsp;expression&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Nth_bit&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;N)&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;M;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>In&nbsp;other&nbsp;words,&nbsp;we&nbsp;are&nbsp;shifting&nbsp;the&nbsp;number&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;left&nbsp;by&nbsp;N&nbsp;spaces,&nbsp;and&nbsp;then&nbsp;performing&nbsp;a&nbsp;binary&nbsp;AND&nbsp;on&nbsp;the&nbsp;resulting&nbsp;number&nbsp;with&nbsp;our&nbsp;original&nbsp;number,&nbsp;which&nbsp;will&nbsp;leave&nbsp;either&nbsp;a&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;Nth&nbsp;bit&nbsp;or&nbsp;a&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">.&nbsp;So&nbsp;the&nbsp;first&nbsp;thing&nbsp;we&nbsp;have&nbsp;to&nbsp;</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;find&nbsp;</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">&nbsp;the&nbsp;distance&nbsp;between&nbsp;each&nbsp;pair&nbsp;of&nbsp;numbers&nbsp;within&nbsp;the&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;of&nbsp;all&nbsp;numbers&nbsp;with&nbsp;B&nbsp;bits&nbsp;(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">..2B</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">).&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>We&nbsp;also&nbsp;know&nbsp;that&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;can&nbsp;be&nbsp;one&nbsp;of&nbsp;the&nbsp;numbers&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">,&nbsp;because&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;the&nbsp;minimum&nbsp;number&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;were&nbsp;N&nbsp;instead&nbsp;of&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;we&nbsp;could&nbsp;subtract&nbsp;N&nbsp;from&nbsp;each&nbsp;number&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;and&nbsp;they&nbsp;would&nbsp;still&nbsp;be&nbsp;the&nbsp;same&nbsp;distance&nbsp;apart.&nbsp;The&nbsp;limits&nbsp;on&nbsp;the&nbsp;problem&nbsp;are&nbsp;low&nbsp;enough&nbsp;that&nbsp;we&nbsp;can&nbsp;</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">&nbsp;a&nbsp;DFS,&nbsp;and&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;soon&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;we&nbsp;hit&nbsp;a&nbsp;solution&nbsp;we&nbsp;can&nbsp;output&nbsp;it&nbsp;and&nbsp;exit.&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX&nbsp;(1&nbsp;&lt;&lt;&nbsp;8&nbsp;+&nbsp;1)</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;NMAX&nbsp;65</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;BMAX&nbsp;10</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;DMAX&nbsp;10</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nums[NMAX],&nbsp;dist[MAX][MAX];<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N,&nbsp;B,&nbsp;D,&nbsp;maxval;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>FILE&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img id=Codehighlighter1_1228_1833_Open_Image onclick="this.style.display='none'; Codehighlighter1_1228_1833_Open_Text.style.display='none'; Codehighlighter1_1228_1833_Closed_Image.style.display='inline'; Codehighlighter1_1228_1833_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1228_1833_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1228_1833_Closed_Text.style.display='none'; Codehighlighter1_1228_1833_Open_Image.style.display='inline'; Codehighlighter1_1228_1833_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;findgroups(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;cur,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;start)&nbsp;</span><span id=Codehighlighter1_1228_1833_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1228_1833_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a,&nbsp;b,&nbsp;canuse;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img id=Codehighlighter1_1283_1532_Open_Image onclick="this.style.display='none'; Codehighlighter1_1283_1532_Open_Text.style.display='none'; Codehighlighter1_1283_1532_Closed_Image.style.display='inline'; Codehighlighter1_1283_1532_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1283_1532_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1283_1532_Closed_Text.style.display='none'; Codehighlighter1_1283_1532_Open_Image.style.display='inline'; Codehighlighter1_1283_1532_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(cur&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;N)&nbsp;</span><span id=Codehighlighter1_1283_1532_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1283_1532_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img id=Codehighlighter1_1319_1509_Open_Image onclick="this.style.display='none'; Codehighlighter1_1319_1509_Open_Text.style.display='none'; Codehighlighter1_1319_1509_Closed_Image.style.display='inline'; Codehighlighter1_1319_1509_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1319_1509_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1319_1509_Closed_Text.style.display='none'; Codehighlighter1_1319_1509_Open_Image.style.display='inline'; Codehighlighter1_1319_1509_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;a&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;cur;&nbsp;a</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_1319_1509_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1319_1509_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;nums[a]);<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;cur</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img id=Codehighlighter1_1571_1831_Open_Image onclick="this.style.display='none'; Codehighlighter1_1571_1831_Open_Text.style.display='none'; Codehighlighter1_1571_1831_Closed_Image.style.display='inline'; Codehighlighter1_1571_1831_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1571_1831_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1571_1831_Closed_Text.style.display='none'; Codehighlighter1_1571_1831_Open_Image.style.display='inline'; Codehighlighter1_1571_1831_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;start;&nbsp;a&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;maxval;&nbsp;a</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_1571_1831_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1571_1831_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canuse&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;b&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;cur;&nbsp;b</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img id=Codehighlighter1_1665_1730_Open_Image onclick="this.style.display='none'; Codehighlighter1_1665_1730_Open_Text.style.display='none'; Codehighlighter1_1665_1730_Closed_Image.style.display='inline'; Codehighlighter1_1665_1730_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1665_1730_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1665_1730_Closed_Text.style.display='none'; Codehighlighter1_1665_1730_Open_Image.style.display='inline'; Codehighlighter1_1665_1730_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(dist[nums[b]][a]&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;D)&nbsp;</span><span id=Codehighlighter1_1665_1730_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1665_1730_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;canuse&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img id=Codehighlighter1_1752_1825_Open_Image onclick="this.style.display='none'; Codehighlighter1_1752_1825_Open_Text.style.display='none'; Codehighlighter1_1752_1825_Closed_Image.style.display='inline'; Codehighlighter1_1752_1825_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1752_1825_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1752_1825_Closed_Text.style.display='none'; Codehighlighter1_1752_1825_Open_Image.style.display='inline'; Codehighlighter1_1752_1825_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(canuse)&nbsp;</span><span id=Codehighlighter1_1752_1825_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1752_1825_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums[cur]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;a;<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;findgroups(cur</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;a</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img id=Codehighlighter1_1847_2287_Open_Image onclick="this.style.display='none'; Codehighlighter1_1847_2287_Open_Text.style.display='none'; Codehighlighter1_1847_2287_Closed_Image.style.display='inline'; Codehighlighter1_1847_2287_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1847_2287_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1847_2287_Closed_Text.style.display='none'; Codehighlighter1_1847_2287_Open_Image.style.display='inline'; Codehighlighter1_1847_2287_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span id=Codehighlighter1_1847_2287_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1847_2287_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hamming.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hamming.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a,&nbsp;b,&nbsp;c;<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">B,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">D);<br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;maxval&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;B);<br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(a&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;a&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;maxval;&nbsp;a</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img id=Codehighlighter1_2069_2232_Open_Image onclick="this.style.display='none'; Codehighlighter1_2069_2232_Open_Text.style.display='none'; Codehighlighter1_2069_2232_Closed_Image.style.display='inline'; Codehighlighter1_2069_2232_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_2069_2232_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2069_2232_Closed_Text.style.display='none'; Codehighlighter1_2069_2232_Open_Image.style.display='inline'; Codehighlighter1_2069_2232_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;b&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;maxval;&nbsp;b</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_2069_2232_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_2069_2232_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dist[a][b]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(c&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;c&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;B;&nbsp;c</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;<br></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(((</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;c)&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;a)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;((</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;c)&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;b))<br></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dist[a][b]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;nums[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;findgroups(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
<img src ="http://www.cppblog.com/klion/aggbug/120084.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-11 14:05 <a href="http://www.cppblog.com/klion/archive/2010/07/11/120084.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 2_1_3  Sorting A Three-Valued Sequence</title><link>http://www.cppblog.com/klion/archive/2010/07/10/120006.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sat, 10 Jul 2010 13:00:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/07/10/120006.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/120006.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/07/10/120006.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/120006.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/120006.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这题一开始我想成了逆序，然后写了之后才发现不对。于是就在想，后来我想到了下面的方法首先求得1的个数k1和2的个数k2。然后我们对前k1个数进行操作，如果是排序好了的话，这前k1个数应该是1,如果是2的话，那么我们从第k2+1个数开始找1,找到第一个1后交换两个数(这样交换的次数是最少的)。如果是3的话，就从最后一个数往前找第一个1,然后交换两个数。同样这样交换的次数是最少的。对1操作完了之后，我们...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/07/10/120006.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/120006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-07-10 21:00 <a href="http://www.cppblog.com/klion/archive/2010/07/10/120006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1_5_4 Checker Challenge (n皇后)</title><link>http://www.cppblog.com/klion/archive/2010/06/07/117332.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Mon, 07 Jun 2010 11:12:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/06/07/117332.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/117332.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/06/07/117332.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/117332.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/117332.html</trackback:ping><description><![CDATA[这题题就是n皇后，不过不超时可能比较困难，至于可能是因为一般的人都知接触过递归版的，表示那个时间和空间要求很高啊。下面我们用位运算来解决这个问题。确切的说是<a href="http://www.matrix67.com/blog/archives/266">Matrix67大牛的原创</a>(再次膜拜)，当然建议先看前面两篇，不然可能有点晕乎乎的。看完之后，你会发现自己提高了，呵呵。大牛已经说的很清楚了，我就不多说了，贴个C语言版的代码吧<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_190727 onclick="this.style.display='none'; Code_Closed_Text_190727.style.display='none'; Code_Open_Image_190727.style.display='inline'; Code_Open_Text_190727.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_190727 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_190727.style.display='none'; Code_Closed_Image_190727.style.display='inline'; Code_Closed_Text_190727.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_190727 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">CODE</span><span id=Code_Open_Text_190727 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">max&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;n)&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;(n是皇后数)<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>sum&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最后结果在sum中</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;work(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;row,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ld,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;rd)<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img id=Codehighlighter1_79_445_Open_Image onclick="this.style.display='none'; Codehighlighter1_79_445_Open_Text.style.display='none'; Codehighlighter1_79_445_Closed_Image.style.display='inline'; Codehighlighter1_79_445_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_79_445_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_79_445_Closed_Text.style.display='none'; Codehighlighter1_79_445_Open_Image.style.display='inline'; Codehighlighter1_79_445_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_79_445_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_79_445_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">row是列禁止，ld是对角线禁止，rd是反对角线禁止</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pos,p;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(row&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;max)<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;max&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">(row&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;ld&nbsp;</span><span style="COLOR: #000000">|</span><span style="COLOR: #000000">&nbsp;rd));</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">得到当前行的可放皇后的位置<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">row|ld|rd是禁止位，然后取反，在和max与就是可以放皇后的位置</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;pos)<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img id=Codehighlighter1_282_443_Open_Image onclick="this.style.display='none'; Codehighlighter1_282_443_Open_Text.style.display='none'; Codehighlighter1_282_443_Closed_Image.style.display='inline'; Codehighlighter1_282_443_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_282_443_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_282_443_Closed_Text.style.display='none'; Codehighlighter1_282_443_Open_Image.style.display='inline'; Codehighlighter1_282_443_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_282_443_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_282_443_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pos&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">pos;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">在可放的位置找第一个，然后测试</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;p;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">把已经测试过的去掉</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;work(row</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p,(ld</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p)</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,(rd</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">p)</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">移位是因为在当前行是禁位的</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">话,那么在下一行就是左移一位或者右移一位了</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
理解了上面的代码之后，这题剩下的就是求前三个了，那个可以用递归版的，也可以用这个求不过还得加一个参数，里面在改一下，用log或者long10求log(2)p时注意精度，不然结果4会变成3，但是单独把3拿出来之后，4就还是4,这或许是计算机内部的原因吧，哪位路过大牛知道的告诉声，感激不尽，对于13皇后，我的才用了0.2S。而且1A，小小的兴奋下，哈哈，第一章结束了，下面是第二章，奋斗，加油。<br>似乎官方的是搜索，但是还没看，往上应该有的，就不传上来了，如果要的话，留邮箱吧，不过基本也没必要了，因为那个搜索时间肯定不比这个少，但是对于学习知识到是不错的选择。 
<img src ="http://www.cppblog.com/klion/aggbug/117332.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-06-07 19:12 <a href="http://www.cppblog.com/klion/archive/2010/06/07/117332.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1_5_3 SuperPrime Rib </title><link>http://www.cppblog.com/klion/archive/2010/06/07/117328.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Mon, 07 Jun 2010 08:42:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/06/07/117328.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/117328.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/06/07/117328.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/117328.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/117328.html</trackback:ping><description><![CDATA[题意：给出一个长度，要求输出这样的所有素数n，while(n){isprime(n); n /= 10;}.<br>首先我们可以知道对于n的第一位一定是2 3 5 7中的一个(必须是素数),然后后面的每一位一定是奇数,不然不可能是素数。<br>到这基本就OK了。然后根据位数递归解决(有人叫dfs或bfs。我还是习惯叫递归-_-,无视我把)。<br>这个贴下官方的代码吧。(比较简单，自己先想想哦)<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_164147 onclick="this.style.display='none'; Code_Closed_Text_164147.style.display='none'; Code_Open_Image_164147.style.display='inline'; Code_Open_Text_164147.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_164147 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_164147.style.display='none'; Code_Closed_Image_164147.style.display='inline'; Code_Closed_Text_164147.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_164147 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">CODE</span><span id=Code_Open_Text_164147 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">We&nbsp;use&nbsp;a&nbsp;recursive&nbsp;search&nbsp;to&nbsp;build&nbsp;superprimes&nbsp;of&nbsp;length&nbsp;n&nbsp;from&nbsp;superprimes&nbsp;of&nbsp;length&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;by&nbsp;adding&nbsp;a&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,&nbsp;or&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">.&nbsp;(Numbers&nbsp;ending&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;any&nbsp;other&nbsp;digit&nbsp;are&nbsp;divisible&nbsp;by&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;or&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">.)&nbsp;Since&nbsp;there&nbsp;are&nbsp;so&nbsp;few&nbsp;numbers&nbsp;being&nbsp;tested,&nbsp;a&nbsp;simple&nbsp;primality&nbsp;test&nbsp;suffices.&nbsp;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">assert.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>FILE&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">fout;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>isprime(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n)<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_371_500_Open_Image onclick="this.style.display='none'; Codehighlighter1_371_500_Open_Text.style.display='none'; Codehighlighter1_371_500_Closed_Image.style.display='inline'; Codehighlighter1_371_500_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_371_500_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_371_500_Closed_Text.style.display='none'; Codehighlighter1_371_500_Open_Image.style.display='inline'; Codehighlighter1_371_500_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_371_500_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_371_500_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;i</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">i&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img id=Codehighlighter1_503_574_Open_Image onclick="this.style.display='none'; Codehighlighter1_503_574_Open_Text.style.display='none'; Codehighlighter1_503_574_Closed_Image.style.display='inline'; Codehighlighter1_503_574_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_503_574_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_503_574_Closed_Text.style.display='none'; Codehighlighter1_503_574_Open_Image.style.display='inline'; Codehighlighter1_503_574_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_503_574_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_503_574_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;print&nbsp;all&nbsp;sprimes&nbsp;possible&nbsp;by&nbsp;adding&nbsp;ndigit&nbsp;digits&nbsp;to&nbsp;the&nbsp;number&nbsp;n&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>sprime(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ndigit)<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_607_853_Open_Image onclick="this.style.display='none'; Codehighlighter1_607_853_Open_Text.style.display='none'; Codehighlighter1_607_853_Closed_Image.style.display='inline'; Codehighlighter1_607_853_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_607_853_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_607_853_Closed_Text.style.display='none'; Codehighlighter1_607_853_Open_Image.style.display='inline'; Codehighlighter1_607_853_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_607_853_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_607_853_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img id=Codehighlighter1_626_668_Open_Image onclick="this.style.display='none'; Codehighlighter1_626_668_Open_Text.style.display='none'; Codehighlighter1_626_668_Closed_Image.style.display='inline'; Codehighlighter1_626_668_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_626_668_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_626_668_Closed_Text.style.display='none'; Codehighlighter1_626_668_Open_Image.style.display='inline'; Codehighlighter1_626_668_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ndigit&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_626_668_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_626_668_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fout,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;n);<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="COLOR: #000000">*=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;ndigit</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,&nbsp;ndigit</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,&nbsp;ndigit</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">))<br></span><span style="COLOR: #008080">45</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sprime(n</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">,&nbsp;ndigit</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>main(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img id=Codehighlighter1_872_1111_Open_Image onclick="this.style.display='none'; Codehighlighter1_872_1111_Open_Text.style.display='none'; Codehighlighter1_872_1111_Closed_Image.style.display='inline'; Codehighlighter1_872_1111_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_872_1111_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_872_1111_Closed_Text.style.display='none'; Codehighlighter1_872_1111_Open_Image.style.display='inline'; Codehighlighter1_872_1111_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_872_1111_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_872_1111_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n;<br></span><span style="COLOR: #008080">52</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">fin;<br></span><span style="COLOR: #008080">53</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">54</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fin&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sprime.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">55</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;assert(fin&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL);<br></span><span style="COLOR: #008080">56</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fout&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">sprime.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">57</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;assert(fout&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL);<br></span><span style="COLOR: #008080">58</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">59</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n);<br></span><span style="COLOR: #008080">60</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">61</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sprime(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">62</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sprime(</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">63</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sprime(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">64</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sprime(</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,&nbsp;n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">65</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">66</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">67</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">68</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
<img src ="http://www.cppblog.com/klion/aggbug/117328.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-06-07 16:42 <a href="http://www.cppblog.com/klion/archive/2010/06/07/117328.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1_5_2 回文素数</title><link>http://www.cppblog.com/klion/archive/2010/06/06/117274.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 06 Jun 2010 09:39:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/06/06/117274.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/117274.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/06/06/117274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/117274.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/117274.html</trackback:ping><description><![CDATA[
<span  style="WORD-SPACING: 0px; FONT: medium Simsun; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); TEXT-INDENT: 0px; WHITE-SPACE: normal; LETTER-SPACING: normal; BORDER-COLLAPSE: separate; orphans: 2; widows: 2; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">题意就是要求在给定区间中的所有回文素数(既是回文有时素数)。<br>一开始我想直接搞，也就是先判断回文，然后再判断素数，素数我还优化了下(每6个判断2个)。可是最后一组还是过不了，我的要1.56S，但是时限是1S。于是就照着提示敲了下，发现我不怎么会那种写法，写的代码好长啊<br>-_-~~~。不判断回文，而是枚举所有的回文数，既对某个长度的所有数，折半枚举，这样的话，枚举出来之后的数一定是回文比如对长度是5的，你可以枚举第一位第二位第三位，然后后面的和前面的一定是对称的，这样可以省很多时间<br>我的代码太长了，就不常上来献丑了，传份<a href="http://www.cppblog.com/Files/klion/pprime.txt">官方的</a>吧.后来又看到有人是先判素数，然后在判回文的，把所有素数都找出来(用char 存)在判回文</span><img src ="http://www.cppblog.com/klion/aggbug/117274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-06-06 17:39 <a href="http://www.cppblog.com/klion/archive/2010/06/06/117274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1_5_1 Number Triangles</title><link>http://www.cppblog.com/klion/archive/2010/06/06/117264.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 06 Jun 2010 05:25:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/06/06/117264.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/117264.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/06/06/117264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/117264.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/117264.html</trackback:ping><description><![CDATA[有名的数塔问题，对于刚接触DP的同学，应该就是这题吧，这里说一下我的想法和官方的代码。<br>这题肯定是不可以用最原始的递归的，对于初学DP的同学，可能会用到DP的递归调用，那只是第一步，接着你会把递归的化成非递归的，然后你可能还会想到从下往上计算而不是从上往下计算，因为当你用从上往下计算时，要考虑数组是否越界(也就是没行的第一个，这个数的左上没有数，还有就是每一行的最后一个数，它的右上没有数，这个可以不考虑，数组已经开出来了，不过得初始化为0)。从下往上就不用考虑这么多了。其实考虑到这，基本也差不多了，但是似乎我们得开一个二维数组来存这些结果，可是对于这些结果我们用不着都存起来，当我们考虑到第i行时，我们只要考虑第i-1行就行了，第i-1行以前的所有结果我们都没必要存起来。那么我们就可以用两个一维数组存起来了一个是当前行的最优结果(也就是要算的)，还有一个是上一行的最优结果。另外在<a href="http://www.cppblog.com/Files/klion/dp.doc">01背包</a>里面会用到这样的优化，有时不优化就会MLE。(代码建议自己想先，再参考)<br>贴一下从下往上算的：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_132250 onclick="this.style.display='none'; Code_Closed_Text_132250.style.display='none'; Code_Open_Image_132250.style.display='inline'; Code_Open_Text_132250.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_132250 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_132250.style.display='none'; Code_Closed_Image_132250.style.display='inline'; Code_Closed_Text_132250.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_132250 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">CODE</span><span id=Code_Open_Text_132250 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img id=Codehighlighter1_0_42_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_42_Open_Text.style.display='none'; Codehighlighter1_0_42_Closed_Image.style.display='inline'; Codehighlighter1_0_42_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_42_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_42_Closed_Text.style.display='none'; Codehighlighter1_0_42_Open_Image.style.display='inline'; Codehighlighter1_0_42_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_42_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_0_42_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;ID:qcx97811<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;LANG:C<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;PROG:numtri<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;num[</span><span style="COLOR: #000000">1002</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">1002</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;dp[</span><span style="COLOR: #000000">1002</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">1002</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;max_int(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_169_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_169_194_Open_Text.style.display='none'; Codehighlighter1_169_194_Closed_Image.style.display='inline'; Codehighlighter1_169_194_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_169_194_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_169_194_Closed_Text.style.display='none'; Codehighlighter1_169_194_Open_Image.style.display='inline'; Codehighlighter1_169_194_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_169_194_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_169_194_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a:b;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(main)<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id=Codehighlighter1_211_763_Open_Image onclick="this.style.display='none'; Codehighlighter1_211_763_Open_Text.style.display='none'; Codehighlighter1_211_763_Closed_Image.style.display='inline'; Codehighlighter1_211_763_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_211_763_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_211_763_Closed_Text.style.display='none'; Codehighlighter1_211_763_Open_Image.style.display='inline'; Codehighlighter1_211_763_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_211_763_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_211_763_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">numtri.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdin);<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">numtri.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdout);<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;r;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,j;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">r);<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;r;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img id=Codehighlighter1_355_422_Open_Image onclick="this.style.display='none'; Codehighlighter1_355_422_Open_Text.style.display='none'; Codehighlighter1_355_422_Closed_Image.style.display='inline'; Codehighlighter1_355_422_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_355_422_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_355_422_Closed_Text.style.display='none'; Codehighlighter1_355_422_Open_Image.style.display='inline'; Codehighlighter1_355_422_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_355_422_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_355_422_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;j&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">num[i][j]);<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(dp,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(dp));<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;r;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[r</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;num[r</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][i];</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">初始化最后一行的最优解</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;r</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;i&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_552_694_Open_Image onclick="this.style.display='none'; Codehighlighter1_552_694_Open_Text.style.display='none'; Codehighlighter1_552_694_Closed_Image.style.display='inline'; Codehighlighter1_552_694_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_552_694_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_552_694_Closed_Text.style.display='none'; Codehighlighter1_552_694_Open_Image.style.display='inline'; Codehighlighter1_552_694_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_552_694_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_552_694_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;j&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img id=Codehighlighter1_590_687_Open_Image onclick="this.style.display='none'; Codehighlighter1_590_687_Open_Text.style.display='none'; Codehighlighter1_590_687_Closed_Image.style.display='inline'; Codehighlighter1_590_687_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_590_687_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_590_687_Closed_Text.style.display='none'; Codehighlighter1_590_687_Open_Image.style.display='inline'; Codehighlighter1_590_687_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_590_687_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_590_687_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;num[i][j]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;max_int(dp[i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j],dp[i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">每一行的最优解由它的左下和右下两个得到</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">35</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">37</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,dp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">最终结果存在第一个元素中，也就是最上面的那个</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">38</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
<br>下面的代码是官方给的(省内存)<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id=Code_Closed_Image_132456 onclick="this.style.display='none'; Code_Closed_Text_132456.style.display='none'; Code_Open_Image_132456.style.display='inline'; Code_Open_Text_132456.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" width=11 align=top><img id=Code_Open_Image_132456 style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_132456.style.display='none'; Code_Closed_Image_132456.style.display='inline'; Code_Closed_Text_132456.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top><span id=Code_Closed_Text_132456 style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">CODE2</span><span id=Code_Open_Text_132456 style="DISPLAY: none"><br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">assert.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAXR&nbsp;1000</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>max(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b)<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_121_146_Open_Image onclick="this.style.display='none'; Codehighlighter1_121_146_Open_Text.style.display='none'; Codehighlighter1_121_146_Closed_Image.style.display='inline'; Codehighlighter1_121_146_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_121_146_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_121_146_Closed_Text.style.display='none'; Codehighlighter1_121_146_Open_Image.style.display='inline'; Codehighlighter1_121_146_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_121_146_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_121_146_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;a&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;b&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;a&nbsp;:&nbsp;b;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>main(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img id=Codehighlighter1_165_825_Open_Image onclick="this.style.display='none'; Codehighlighter1_165_825_Open_Text.style.display='none'; Codehighlighter1_165_825_Closed_Image.style.display='inline'; Codehighlighter1_165_825_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_165_825_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_165_825_Closed_Text.style.display='none'; Codehighlighter1_165_825_Open_Image.style.display='inline'; Codehighlighter1_165_825_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_165_825_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_165_825_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;best[MAXR],&nbsp;oldbest[MAXR];</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">best是当前行的最优值,oldbest<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">数组是当前行的上一行的最优值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i,&nbsp;j,&nbsp;r,&nbsp;n,&nbsp;m;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;FILE&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">fin,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">fout;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fin&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">numtri.in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;assert(fin&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL);<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fout&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;fopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">numtri.out</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">w</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;assert(fout&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;NULL);<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">r);<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">MAXR;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;best[i]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img id=Codehighlighter1_475_709_Open_Image onclick="this.style.display='none'; Codehighlighter1_475_709_Open_Text.style.display='none'; Codehighlighter1_475_709_Closed_Image.style.display='inline'; Codehighlighter1_475_709_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_475_709_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_475_709_Closed_Text.style.display='none'; Codehighlighter1_475_709_Open_Image.style.display='inline'; Codehighlighter1_475_709_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">r;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_475_709_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_475_709_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memmove(oldbest,&nbsp;best,&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">&nbsp;oldbest);</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">把上一次的最优结果赋值到这次的上一行最优结果中</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">34</span><span style="COLOR: #008000"><img id=Codehighlighter1_565_706_Open_Image onclick="this.style.display='none'; Codehighlighter1_565_706_Open_Text.style.display='none'; Codehighlighter1_565_706_Closed_Image.style.display='inline'; Codehighlighter1_565_706_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_565_706_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_565_706_Closed_Text.style.display='none'; Codehighlighter1_565_706_Open_Image.style.display='inline'; Codehighlighter1_565_706_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i;&nbsp;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_565_706_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_565_706_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fscanf(fin,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n);<br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(j&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">如果是每行的开头</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">37</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;best[j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;oldbest[j]&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n;<br></span><span style="COLOR: #008080">38</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">39</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;best[j]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;max(oldbest[j],&nbsp;oldbest[j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;n;<br></span><span style="COLOR: #008080">40</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">41</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">42</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">43</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">44</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">r;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">在最后一行查找最优值</span><span style="COLOR: #008000"><br></span><span style="COLOR: #008080">45</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(best[i]&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;m)<br></span><span style="COLOR: #008080">46</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;best[i];<br></span><span style="COLOR: #008080">47</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br></span><span style="COLOR: #008080">48</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fprintf(fout,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;m);<br></span><span style="COLOR: #008080">49</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">50</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">51</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></span></div>
<img src ="http://www.cppblog.com/klion/aggbug/117264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-06-06 13:25 <a href="http://www.cppblog.com/klion/archive/2010/06/06/117264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1_4_4 Mother's Milk</title><link>http://www.cppblog.com/klion/archive/2010/06/04/117192.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 04 Jun 2010 14:18:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/06/04/117192.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/117192.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/06/04/117192.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/117192.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/117192.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 简单的搜索题，用递归实现就行了，开一个三维数组来记录状态是否出现过。一共有六种到牛奶的方法，不过如果某个瓶子没空了，那不能到给其他瓶子了。直接代码(自己先想想) 发现我插不进代码，以后再贴吧，到时顺便把官方给的方法给贴一下 MY CODECode highlighting produced by Actipro CodeHighlighter (freeware)http://www.Code...&nbsp;&nbsp;<a href='http://www.cppblog.com/klion/archive/2010/06/04/117192.html'>阅读全文</a><img src ="http://www.cppblog.com/klion/aggbug/117192.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-06-04 22:18 <a href="http://www.cppblog.com/klion/archive/2010/06/04/117192.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO1_4_3 Arithmetic Progressions</title><link>http://www.cppblog.com/klion/archive/2010/05/07/114752.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Fri, 07 May 2010 06:40:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/05/07/114752.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/114752.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/05/07/114752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/114752.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/114752.html</trackback:ping><description><![CDATA[<p>原文翻译：</p>
<p>翻译者：timgreen</p>
<p>转载自：OIBH</p>
<p>一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)<br>在这个问题中a是一个非负的整数，b是正整数。<br>写一个程序来找出在双平方数集合S中长度为n的等差数列。<br>双平方数集合是所有能表示成p2＋q2的数的集合。</p>
<p>PROGRAM NAME: ariprog</p>
<p>INPUT FORMAT</p>
<p>第一行:&nbsp; N(3&lt;= N&lt;=25),要找的等差数列的长度。&nbsp; <br>第二行:&nbsp; M(1&lt;= M&lt;=250),搜索双平方数的上界0 &lt;= p,q &lt;= M。</p>
<p>SAMPLE INPUT (file ariprog.in)<br>5<br>7</p>
<p>OUTPUT FORMAT<br>如果没有找到数列,输出`NONE'。<br>如果找到了，输出一行或多行, 每行由于二个整数组成:a,b<br>这些行应该先按b排序再按a排序。<br>将不会有只多于10,000个等差数列。</p>
<p>SAMPLE OUTPUT (file ariprog.out)<br>1 4<br>37 4<br>2 8<br>29 8<br>1 12<br>5 12<br>13 12<br>17 12<br>5 20<br>2 24<br>这题的思路应该说还是比较容易想的，不过要已开始就想到不TLE的就有点难了，可以把形 如p^2+q^2的数都存起来，后来就可以直接去数组里面取了。<br>接下来就是找适合的a和b了。<br>我一开始的代码是最原始的，就是一个一个找，<br>for(int i = 0;i &lt; index1-n+1;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;a = num[i];<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for(int j = i+1;j &lt; index1;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;b = num[j]-a;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;now = a+b;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;count = 2;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(a + b*(n-1) &gt; max_num)//这里是表示不可能找到满足条件的a和b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; for(int k = j+1;k &lt; index1;k++)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(now+b == num[k])<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; now = num[k];<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; count++;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; if(n == count)//如果找到，就退出<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[index2].a = a;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[index2++].b = b;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; }<br>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; if(num[k] &gt; now + b)//表示不可能找到合适的a和b<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; }&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp; }</p>
可是这样TLE，死在第7组数据上，听说第8组更强悍的数据。<br>后来搜了份报告，发现挺不错的，<br>代码如下<br>for(int i = 0;i &lt; index1-n+1;i++)<br>&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;a = num[i];<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;for(int j = i+1;j &lt; index1;j++)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;b = num[j]-a;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;now = a+b;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;count = 2;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(a + b*(n-1) &gt; max_num)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; continue;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;can = true;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;for(int k = 2;k &lt; n;k++)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(!isexict[a+b*k])//isexict[i]表示i可以表示成p^2+q^2不<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;can = false;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;break;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;if(can)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;node[index2].a = a;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;node[index2++].b = b;<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; }<br>我的思路是一直找，找合适的，但是上面这个就是找不合适的，这样肯定会快，因为这里面不合适的多得多。这就是枚举时不同的方法，差别很大啊<br>不过还有人能在第8组数据上之用0.63S，可是我的用了1.46S，看来还有更好的，继续学习。 <br>不过现在我再改了下，第8组数据也只要0.43S了，也就是把下第二个程序的<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(a + b*(n-1) &gt; max_num)<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; continue;<br>&nbsp;&nbsp;中的continue;改成break;因为当这个不可能的时候，下面的b只会比这个还大，那肯定不行，所以就直接break了
<img src ="http://www.cppblog.com/klion/aggbug/114752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-05-07 14:40 <a href="http://www.cppblog.com/klion/archive/2010/05/07/114752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.4.2</title><link>http://www.cppblog.com/klion/archive/2010/05/05/114511.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Wed, 05 May 2010 10:12:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/05/05/114511.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/114511.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/05/05/114511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/114511.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/114511.html</trackback:ping><description><![CDATA[由于1.4.1太WS了，我就先看了下后面三个，一开始看这个，感觉是一个简单的BFS，而且和数据结构书上的迷宫算法应该差不多，就写了个，可是我写好了后，发现第三组数据过不掉&#8230;&#8230;，要不就是数组太小了，越界，要不就是数组不够大，反正我找不到一个合适的，而且本人刚写搜索算法，以前对搜索有一点恐惧(莫名的恐惧)，不过现在好了，看来还是要写几个啊，呵呵。而且这题有放在搜索这一章，于是我该数组改了20多次，一直过不掉，后来搜了分解题报告，人家说9重循环，我一看就蒙了，9重？不过这倒是个不错的想法，而且时间要求不多，就4^9次，因为每一个转4次和没转是一样的。<br>下面附个官方的吧，（那个9重循环的对于没其他想法的人可以一试，毕竟那样是自己写出来的。）<br>
<p>Notice that the order in which we apply moves is irrelevant, and that applying a move four times is the same as applying it not at all.
<p>Thus there are only 4<sup>9</sup> = 262144 move sequences that need to be tried, so we might as well just try them all.
<p>We don't generate them shortest first, but looking at sequences of the same length, we generate the lesser ones before the greater ones, so we only need to keep track of the shortest working sequence we've found.
<pre>#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;assert.h&gt;
#include &lt;ctype.h&gt;
#define INF 60000	/* bigger than longest possible path */
char *movestr[] = { "abde", "abc", "bcef", "adg", "bdefh", "cfi", "degh",
"ghi", "efhi" };
int movedist[9][9];
int clock[9];
int bestmove[9];
int nbestmove;
/* translate move strings into array "movedist" of which clocks change on each move */
void  mkmove(void)
{
int i;
char *p;
for(i=0; i&lt;9; i++)
for(p=movestr[i]; *p; p++)
movedist[i][*p-'a'] = 3;
}
/* apply some number of each move from k to 9 */
/* move contains the number of times each move is applied */
void  solve(int *move, int k)
{
int i, j, n, rep;
if(k == 9) {
for(j=0; j&lt;9; j++)
if(clock[j]%12 != 0)
return;
/* we have a successful sequence of moves */
n = 0;
for(j=0; j&lt;9; j++)
n += move[j];
if(nbestmove == 0 || n &lt; nbestmove) {
nbestmove = n;
for(j=0; j&lt;9; j++)
bestmove[j] = move[j];
}
return;
}
/*
* the for loop counts down so we
* generate smaller numbers first by
* trying more of small numbered
* moves before we try less of them.
*/
for(rep=3; rep&gt;=0; rep--) {
/* apply move k rep times */
for(i=0; i&lt;rep; i++)
for(j=0; j&lt;9; j++)
clock[j] += movedist[k][j];
move[k] = rep;
solve(move, k+1);
/* undo move */
for(i=0; i&lt;rep; i++)
for(j=0; j&lt;9; j++)
clock[j] -= movedist[k][j];
}
}
void  main(void)
{
FILE *fin, *fout;
int i, j, move[9];
char *sep;
fin = fopen("clocks.in", "r");
fout = fopen("clocks.out", "w");
assert(fin != NULL &amp;&amp; fout != NULL);
mkmove();
for(i=0; i&lt;9; i++)
fscanf(fin, "%d", &amp;clock[i]);
solve(move, 0);
sep = "";
for(i=0; i&lt;9; i++) {
for(j=0; j&lt;bestmove[i]; j++) {
fprintf(fout, "%s%d", sep, i+1);
sep = " ";
}
}
fprintf(fout, "\n");
exit(0);
}
</pre>
<img src ="http://www.cppblog.com/klion/aggbug/114511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-05-05 18:12 <a href="http://www.cppblog.com/klion/archive/2010/05/05/114511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.3.3Calf Flac</title><link>http://www.cppblog.com/klion/archive/2010/05/02/114208.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sun, 02 May 2010 13:08:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/05/02/114208.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/114208.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/05/02/114208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/114208.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/114208.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这题一开始看可能会感觉比较难，不过仔细想想的话，其实不难，你可以循环，找出以每个字符为中点的(回文串是奇数的)，或者是以这个字符为回文中间的右边(回文串是偶数的)，然后扫瞄一遍，最后比较求出最大值，中间要记录回文串最大值的开始下标，和终止下标。最后就是输出了。代码量也不算大，不过要细心一点，还有就是在Windows下面编译运行的话，可能数组越界了，照常可以，不过可能结果不对，但是用正式的GCC和G++的话，就不行了，会出异常，USACO就是用正式的GCC和G++编译运行的。如果有可能的话，还是用正式的GCC和G++写代码吧，那样更好，就像DEV比Win-TC要好一样，编译器严格一点，对自己就更有好处。
<img src ="http://www.cppblog.com/klion/aggbug/114208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-05-02 21:08 <a href="http://www.cppblog.com/klion/archive/2010/05/02/114208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.3.2Barn Repair 简单贪心</title><link>http://www.cppblog.com/klion/archive/2010/05/01/114143.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Sat, 01 May 2010 13:30:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/05/01/114143.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/114143.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/05/01/114143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/114143.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/114143.html</trackback:ping><description><![CDATA[这题是一个比较简单的贪心题，不过如果不知道的话，可能会很unhappy了，因为这个是逆向来的，也就是如果你知道了用M块木板覆盖的消耗的话，那么你就可以算出用M-1块木板覆盖的最小覆盖，方法就是在M块木板中找相邻的两块木板相差距离最小的，然后把这两块木板连起来，这样的消耗一定是最小的（这个就不用证明了吧，很明显的）。根据这个思路，可以比较容易的A掉这题，但是还有一些实现的细节下面看代码吧。<br>对于样例的覆盖过程是<br>[3][4][6][8][14][15][16][17][21][25][26][27][30][31][40][41][42][43]<br><span style="BACKGROUND-COLOR: #ffffff">[3,4][6][8][14][15][16][17][21][25][26][27][30][31][40][41][42][43]<br>[3,4][6][8][14,15][16][17][21][25][26][27][30][31][40][41][42][43]<br>[3,4][6][8][14,15,16][17][21][25][26][27][30][31][40][41][42][43]<br>[3,4][6][8][14,15,16,17][21][25][26][27][30][31][40][41][42][43]<br>[3,4][6][8][14,15,16,17][21][25,26][27][30][31][40][41][42][43]<br>[3,4][6][8][14,15,16,17][21][25,26,27][30][31][40][41][42][43]<br>[3,4][6][8][14,15,16,17][21][25,26,27][30,31][40][41][42][43]<br>[3,4][6][8][14,15,16,17][21][25,26,27][30,31][40,41][42][43]<br>[3,4][6][8][14,15,16,17][21][25,26,27][30,31][40,41,42][43]<br>[3,4][6][8][14,15,16,17][21][25,26,27][30,31][40,41,42,43]<br>[3,4,6][8][14,15,16,17][21][25,26,27][30,31][40,41,42,43]<br>[3,4,6,8][14,15,16,17][21][25,26,27][30,31][40,41,42,43]<br>[3,4,6,8][14,15,16,17][21][25,26,27,30,31][40,41,42,43]<br>[3,4,6,8][14,15,16,17,21][25,26,27,30,31][40,41,42,43]</span><br><br>
<div><img id=Code_Open_Image_211619 onclick="this.style.display='none'; Code_Open_Text_211619.style.display='none'; Code_Closed_Image_211619.style.display='inline'; Code_Closed_Text_211619.style.display='inline';" height=16 src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" width=11 align=top>code<br><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->&nbsp;&nbsp;6<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;&lt;iostream&gt;<br>&nbsp;7<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;&lt;string.h&gt;<br>&nbsp;8<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>using&nbsp;namespace&nbsp;std;<br>&nbsp;9<img id=Codehighlighter1_106_171_Open_Image onclick="this.style.display='none'; Codehighlighter1_106_171_Open_Text.style.display='none'; Codehighlighter1_106_171_Closed_Image.style.display='inline'; Codehighlighter1_106_171_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top>/**//*结构体村每个点的数据<br>10<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;其中data表示输入的数据<br>11<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;left和right表示他的左右边<br>12<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;有没有连了其他的木板&nbsp;<br>13<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;*/&nbsp;<br>14<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;struct<br>15<img id=Codehighlighter1_189_219_Open_Image onclick="this.style.display='none'; Codehighlighter1_189_219_Open_Text.style.display='none'; Codehighlighter1_189_219_Closed_Image.style.display='inline'; Codehighlighter1_189_219_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top>{<br>16<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;data;<br>17<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;left,right;<br>18<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}Node;<br>19<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Node&nbsp;node[202];<br>20<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>bool&nbsp;b_barn[202];//b_barn[i]表示第i号牛棚有没有被木板覆盖&nbsp;<br>21<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>int&nbsp;m,s,c;//和题目中的一样&nbsp;<br>22<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>void&nbsp;work()<br>23<img id=Codehighlighter1_320_1451_Open_Image onclick="this.style.display='none'; Codehighlighter1_320_1451_Open_Text.style.display='none'; Codehighlighter1_320_1451_Closed_Image.style.display='inline'; Codehighlighter1_320_1451_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top>{<br>24<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;f_start,f_end,dis;//dis表示最小距离<br>25<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//f_start表示最小距离时的左边的下标<br>26<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//f_end&nbsp;表示最小距离时的右边的下标<br>27<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count&nbsp;=&nbsp;0;//用来存最后的结果&nbsp;<br>28<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;t&nbsp;=&nbsp;c;//表示一开始用c块木板，也就是一个牛棚一块&nbsp;<br>29<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis&nbsp;=&nbsp;202;//最大距离，表示无穷&nbsp;<br>30<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(t&nbsp;&gt;&nbsp;m)<br>31<img id=Codehighlighter1_530_1295_Open_Image onclick="this.style.display='none'; Codehighlighter1_530_1295_Open_Text.style.display='none'; Codehighlighter1_530_1295_Closed_Image.style.display='inline'; Codehighlighter1_530_1295_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>32<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis&nbsp;=&nbsp;202;<br>33<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;1;i&nbsp;&lt;&nbsp;c;i++)//循环数组，找相隔最小的，然后连上&nbsp;<br>34<img id=Codehighlighter1_616_994_Open_Image onclick="this.style.display='none'; Codehighlighter1_616_994_Open_Text.style.display='none'; Codehighlighter1_616_994_Closed_Image.style.display='inline'; Codehighlighter1_616_994_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {//因为这样&#8220;浪费&#8221;的木板最少，也就是能达到最优解&nbsp;<br>35<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(((node[i].data&nbsp;-&nbsp;node[i-1].data)&nbsp;&lt;&nbsp;dis)&amp;&amp;(0&nbsp;==&nbsp;node[i].left||0&nbsp;==&nbsp;node[i-1].right))<br>36<img id=Codehighlighter1_756_981_Open_Image onclick="this.style.display='none'; Codehighlighter1_756_981_Open_Text.style.display='none'; Codehighlighter1_756_981_Closed_Image.style.display='inline'; Codehighlighter1_756_981_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//第一个判断条件很好理解，第二个是表示他们以前没连过，不然的话，<br>37<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//会一直找到第一个最小的&nbsp;,而忽略了后面的&nbsp;<br>38<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dis&nbsp;=&nbsp;node[i].data&nbsp;-&nbsp;node[i-1].data;<br>39<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f_start&nbsp;=&nbsp;i-1;<br>40<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f_end&nbsp;=&nbsp;i;<br>41<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>42<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>43<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;node[f_start].data+1;i&nbsp;&lt;&nbsp;node[f_end].data;i++)<br>44<img id=Codehighlighter1_1075_1147_Open_Image onclick="this.style.display='none'; Codehighlighter1_1075_1147_Open_Text.style.display='none'; Codehighlighter1_1075_1147_Closed_Image.style.display='inline'; Codehighlighter1_1075_1147_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {//将连起来的两块木板中间的都置为被覆盖&nbsp;<br>45<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_barn[i]&nbsp;=&nbsp;true;<br>46<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>47<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[f_start].right&nbsp;=&nbsp;1;//标记，也就是这个点的右边连了其他木板&nbsp;<br>48<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[f_end].left&nbsp;=&nbsp;1;//标记，也就是这个点的左边连了其他木板<br>49<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t--;//表示木板数减少1&nbsp;<br>50<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>51<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;node[0].data;i&nbsp;&lt;&nbsp;node[c-1].data+1;i++)<br>52<img id=Codehighlighter1_1358_1422_Open_Image onclick="this.style.display='none'; Codehighlighter1_1358_1422_Open_Text.style.display='none'; Codehighlighter1_1358_1422_Closed_Image.style.display='inline'; Codehighlighter1_1358_1422_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>53<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(b_barn[i])//通过被标记的数组来算最后的结果&nbsp;<br>54<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count++;<br>55<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>56<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d\n",count);<br>57<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}<br>58<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>int&nbsp;cmp(const&nbsp;void&nbsp;*a,const&nbsp;void&nbsp;*b)<br>59<img id=Codehighlighter1_1490_1571_Open_Image onclick="this.style.display='none'; Codehighlighter1_1490_1571_Open_Text.style.display='none'; Codehighlighter1_1490_1571_Closed_Image.style.display='inline'; Codehighlighter1_1490_1571_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top>&nbsp;{<br>60<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;*&nbsp;c&nbsp;=&nbsp;(Node&nbsp;*)a;<br>61<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Node&nbsp;*&nbsp;d&nbsp;=&nbsp;(Node&nbsp;*)b;<br>62<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;c-&gt;data&nbsp;-&nbsp;d-&gt;data;<br>63<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}<br>64<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>int&nbsp;main(void)<br>65<img id=Codehighlighter1_1588_1990_Open_Image onclick="this.style.display='none'; Codehighlighter1_1588_1990_Open_Text.style.display='none'; Codehighlighter1_1588_1990_Closed_Image.style.display='inline'; Codehighlighter1_1588_1990_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top>{<br>66<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freopen("barn1.in","r",stdin);<br>67<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;freopen("barn1.out","w",stdout);<br>68<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d&nbsp;%d&nbsp;%d",&amp;m,&amp;s,&amp;c);<br>69<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(b_barn,false,sizeof(b_barn));//初始化数组&nbsp;<br>70<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i&nbsp;=&nbsp;0;i&nbsp;&lt;&nbsp;c;i++)<br>71<img id=Codehighlighter1_1772_1913_Open_Image onclick="this.style.display='none'; Codehighlighter1_1772_1913_Open_Text.style.display='none'; Codehighlighter1_1772_1913_Closed_Image.style.display='inline'; Codehighlighter1_1772_1913_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>72<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%d",&amp;node[i].data);<br>73<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;node[i].left&nbsp;=&nbsp;node[i].right&nbsp;=&nbsp;0;//初始化所有的都没有连过&nbsp;<br>74<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b_barn[node[i].data]&nbsp;=&nbsp;true;&nbsp;&nbsp;&nbsp;&nbsp;<br>75<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>76<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>77<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;qsort(node,c,sizeof(node[0]),cmp);//先排序，使木板有序&nbsp;<br>78<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;work();<br>79<img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br>80<img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}<br>81<img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></div>
<img src ="http://www.cppblog.com/klion/aggbug/114143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-05-01 21:30 <a href="http://www.cppblog.com/klion/archive/2010/05/01/114143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.2.3  Name That Number </title><link>http://www.cppblog.com/klion/archive/2010/04/29/113956.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Thu, 29 Apr 2010 07:33:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/04/29/113956.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/113956.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/04/29/113956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/113956.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/113956.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 这题一开始没想出来，一直只想着直接化成字符串然后在比较，可是那样不仅实现比较困难，而且也不怎么实现，因为那样要求的空间太大了，是在承受不了，后来问了下别人，一经点拨，发现OK了。哎，当时怎么就钻进死胡同了呢&#8230;&#8230;<br>&nbsp;&nbsp;&nbsp; 因为给你的数字可以变成一系列字符串，如果在字典中存在某个的话，就输出。那么就直接从文件输入一个字符串，转化成数据，然后比较是否一样(这里必须用long long,因为服务器是用g++编译的,long 太小了,__int64 会编译出错(__int64 在VC中用))当然这里的比较可以转化成字符串比较，这个就不说了。这样扫描一遍字典就OK了，为什么可以呢？因为:假设答案会输出字符串str,那个str一定存在在dict.txt中，而且str转化成数字后肯定和输入的数据是一样的,因为通过输入的数据能变成的字符串是连续的，而且不遗漏的。
<img src ="http://www.cppblog.com/klion/aggbug/113956.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-04-29 15:33 <a href="http://www.cppblog.com/klion/archive/2010/04/29/113956.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.2.4&amp;1.2.5</title><link>http://www.cppblog.com/klion/archive/2010/04/29/113921.html</link><dc:creator>Klion</dc:creator><author>Klion</author><pubDate>Wed, 28 Apr 2010 17:14:00 GMT</pubDate><guid>http://www.cppblog.com/klion/archive/2010/04/29/113921.html</guid><wfw:comment>http://www.cppblog.com/klion/comments/113921.html</wfw:comment><comments>http://www.cppblog.com/klion/archive/2010/04/29/113921.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/klion/comments/commentRss/113921.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/klion/services/trackbacks/113921.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 进制转换和会文书的判断，这样的题我们一般是先转换成数组，然后再数组前后判断，这样是完全可以的，不过我这有种方法，不需要数组了（只能判断是否是回文），<br>&nbsp;bool isalp(int n,int base)//n:要判断的数，base:要转换成的进制<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; int ans = 0,t,k = n;<br>&nbsp;&nbsp;&nbsp;&nbsp; while(n)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = n % base;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n /= base;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans = ans * base + t;//ans记录把转换后的数翻过来之后的10进制数<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp; return (k == ans);//如果把n的base进制数翻过来之后和不翻过来是一样的话，那么就说明n在base进制下是回文，判断结束<br>}
<img src ="http://www.cppblog.com/klion/aggbug/113921.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/klion/" target="_blank">Klion</a> 2010-04-29 01:14 <a href="http://www.cppblog.com/klion/archive/2010/04/29/113921.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>