﻿<?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++博客-希望的海洋</title><link>http://www.cppblog.com/snowshine09/</link><description>Ain't about how fast I get there,ain't about what's waiting on the other side</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 10:49:01 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 10:49:01 GMT</pubDate><ttl>60</ttl><item><title>selective1_2_g 01背包 hdu 2955</title><link>http://www.cppblog.com/snowshine09/archive/2011/09/18/156096.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Sun, 18 Sep 2011 02:30:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/09/18/156096.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/156096.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/09/18/156096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/156096.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/156096.html</trackback:ping><description><![CDATA[<p style="text-indent: 2em">&nbsp;</p>
<p style="text-indent: 2em">简单的01背包，直接做有点麻烦，可以转化为在大于逃脱率的情况下可以获得的最大钱数也就是求得到某个钱数时的最大逃脱率，状态转移方程是 dp[j]=max(dp[j],dp[j-s[i].m]*s[i].p)</p>
<p style="text-indent: 2em">初值dp[0]=1 ,因为不偷钱当然是不被抓的，这里的dp[j]就是获得j钱数可以达到的最大逃脱率！几次抢劫必须同时逃脱才可以，因此概率要乘！这里有个常数级的优化，可以用sum[i] 记录前i的银行（包括i）的钱数和，这样第二个循环就可以是for(j = sum[i] ; j&gt;=s[i].m;j--) , 因为当j &gt;sum[i] 时 j-s[i].m&gt;sum[i-1] (sum[i]-sum[i-1]=s[i].m)这时的dp[j-s[i].m]显然还没有算出来，因为此时最多只算到了sum[i-1] ! </p>
<p style="text-indent: 2em">#include&lt;iostream&gt;<br />#include&lt;math.h&gt;<br />#define M 105<br />using namespace std; </p>
<p style="text-indent: 2em">struct ss {<br />&nbsp;&nbsp;&nbsp; double p;<br />&nbsp;&nbsp;&nbsp; int m;<br />} s[M]; </p>
<p style="text-indent: 2em">int main() {<br />&nbsp;&nbsp;&nbsp; int t, i, j, n, sum[M];<br />&nbsp;&nbsp;&nbsp; double dp[M * M], P;<br />&nbsp;&nbsp;&nbsp; scanf("%d", &amp;t);<br />&nbsp;&nbsp;&nbsp; while (t-- &amp;&amp; scanf("%lf %d", &amp;P, &amp;n)) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P = 1 - P;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memset(dp, 0, sizeof (dp));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp[0] = 1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum[0] = 0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i = 1; i &lt;= n; i++) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf("%d %lf", &amp;s[i].m, &amp;s[i].p);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; s[i].p = 1 - s[i].p;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sum[i] = sum[i - 1] + s[i].m;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i = 1; i &lt;= n; i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = sum[n]; j &gt;= s[i].m; j--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dp[j] = max(dp[j], dp[j - s[i].m] * s[i].p);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (j = sum[n]; j &gt;= 1; j--)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (dp[j] &gt; P)break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\n", j);<br />&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp; return 0;<br />}</p><img src ="http://www.cppblog.com/snowshine09/aggbug/156096.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-09-18 10:30 <a href="http://www.cppblog.com/snowshine09/archive/2011/09/18/156096.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>selective contest1_2_h hdu 1115</title><link>http://www.cppblog.com/snowshine09/archive/2011/09/18/156095.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Sun, 18 Sep 2011 02:29:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/09/18/156095.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/156095.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/09/18/156095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/156095.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/156095.html</trackback:ping><description><![CDATA[<p>求任意多边形的重心</p>
<p>&nbsp;</p>
<p>已知一多边形没有边相交，质量分布均匀。顺序给出多边形的顶点坐标，求其重心。</p>
<p>分析：</p>
<p>求多边形重心的题目大致有这么几种：</p>
<p>1，质量集中在顶点上。n个顶点坐标为(xi,yi)，质量为mi，则重心<br />　　X = &#8721;( xi&#215;mi ) / &#8721;mi<br />　　Y = &#8721;( yi&#215;mi ) / &#8721;mi<br />　　特殊地，若每个点的质量相同，则<br />　　X = &#8721;xi / n<br />　　Y = &#8721;yi / n</p>
<p>2，质量分布均匀。这个题就是这一类型，算法和上面的不同。<br />　　特殊地，质量均匀的三角形重心：<br />　　X = ( x0 + x1 + x2 ) / 3<br />　　Y = ( y0 + y1 + y2 ) / 3</p>
<p>3，质量分布不均匀。只能用积分来算，不会&#8230;&#8230;</p>
<p>下面讨论这个题的解法：</p>
<p>以第一个顶点为基准，分别连接p[i]，p[i+1]，1&lt;i&lt;n。将多边形划分为若干个三角形。</p>
<p>若我们求出了每个三角形的重心和质量，可以构造一个新的多边形，顶点为所有三角形的重心，顶点质量为三角形的质量。这个新多边形的质量和重心与原多边形相同，即可使用第一种类型的公式计算出整个多边形的重心。</p>
<p>由于三角形的面积与质量成正比，所以我们这里用面积代替质量来计算。</p>
<p>现在有个问题就是，多边形有可能为凹多边形，三角形有可能在多边形之外。如何处理这种情况呢？</p>
<p>很简单，我们使用叉积来计算三角形面积，当三角形在多边形之外时，得到&#8220;负面积&#8221;就抵消掉了。<br />S =( x0*y1 + x1*y2 + x2*y0<br />- x1*y0 - x2*y1 - x0*y2 ) /2;</p>
<p>&nbsp;</p>
<p>模版程序</p>
<p>&nbsp;</p>
<p># include&lt;iostream&gt;<br /># include&lt;algorithm&gt;<br />using namespace std;<br />const int maxNum = 1000000 +2;</p>
<p>struct point <br />{ <br />double x, y;<br />};<br />struct point data[maxNum];</p>
<p><span style="color: #ff0000">struct point bcenter(struct point pnt[], int n)【可以用来做模板】</span><br /><span style="color: #ff0000">{</span><br /><span style="color: #ff0000">point p, s;</span><br /><span style="color: #ff0000">double tp, area = 0, tpx = 0, tpy = 0;</span></p>
<p><span style="color: #ff0000">p.x = pnt[0].x; p.y = pnt[0].y;</span></p>
<p><span style="color: #ff0000">for (int i = 1; i &lt;= n; ++i)</span><br /><span style="color: #ff0000">{</span><br /><span style="color: #ff0000"></span><br /><span style="color: #ff0000">s.x = pnt[(i == n) ? 0 : i].x;</span><br /><span style="color: #ff0000">s.y = pnt[(i == n) ? 0 : i].y;</span><br /><span style="color: #ff0000">tp = (p.x * s.y - s.x * p.y);</span><br /><span style="color: #ff0000">area += tp / 2;</span><br /><span style="color: #ff0000">tpx += (p.x + s.x) * tp;</span><br /><span style="color: #ff0000">tpy += (p.y + s.y) * tp;</span><br /><span style="color: #ff0000">p.x = s.x;</span><br /><span style="color: #ff0000">p.y = s.y;</span><br /><span style="color: #ff0000">}</span><br /><span style="color: #ff0000">s.x = tpx / (6 * area);</span><br /><span style="color: #ff0000">s.y = tpy / (6 * area);</span><br /><span style="color: #ff0000">return s;</span><br /><span style="color: #ff0000">}<br /></span><font color="#ff0000">//OR:</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">This&nbsp;source&nbsp;</span><span style="color: #0000ff">is</span><span style="color: #000000">&nbsp;shared&nbsp;by&nbsp;zyd150<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;MAX&nbsp;1000001</span><span style="color: #000000"><br /><img id="Codehighlighter1_100_115_Open_Image" onclick="this.style.display='none'; Codehighlighter1_100_115_Open_Text.style.display='none'; Codehighlighter1_100_115_Closed_Image.style.display='inline'; Codehighlighter1_100_115_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_100_115_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_100_115_Closed_Text.style.display='none'; Codehighlighter1_100_115_Open_Image.style.display='inline'; Codehighlighter1_100_115_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;point</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_100_115_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_100_115_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;x,y;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;point&nbsp;p[MAX],v,ans;<br /><img id="Codehighlighter1_166_519_Open_Image" onclick="this.style.display='none'; Codehighlighter1_166_519_Open_Text.style.display='none'; Codehighlighter1_166_519_Closed_Image.style.display='inline'; Codehighlighter1_166_519_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_166_519_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_166_519_Closed_Text.style.display='none'; Codehighlighter1_166_519_Open_Image.style.display='inline'; Codehighlighter1_166_519_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;process()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_166_519_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_166_519_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,k;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;s,ss</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ans.x</span><span style="color: #000000">=</span><span style="color: #000000">ans.y</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img id="Codehighlighter1_229_386_Open_Image" onclick="this.style.display='none'; Codehighlighter1_229_386_Open_Text.style.display='none'; Codehighlighter1_229_386_Closed_Image.style.display='inline'; Codehighlighter1_229_386_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_229_386_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_229_386_Closed_Text.style.display='none'; Codehighlighter1_229_386_Open_Image.style.display='inline'; Codehighlighter1_229_386_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_229_386_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_229_386_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">(i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">%</span><span style="color: #000000">n;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v.x</span><span style="color: #000000">=</span><span style="color: #000000">(p[i].x</span><span style="color: #000000">+</span><span style="color: #000000">p[j].x)</span><span style="color: #000000">/</span><span style="color: #000000">3.0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v.y</span><span style="color: #000000">=</span><span style="color: #000000">(p[i].y</span><span style="color: #000000">+</span><span style="color: #000000">p[j].y)</span><span style="color: #000000">/</span><span style="color: #000000">3.0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000">=</span><span style="color: #000000">(p[i].x</span><span style="color: #000000">*</span><span style="color: #000000">p[j].y</span><span style="color: #000000">-</span><span style="color: #000000">p[i].y</span><span style="color: #000000">*</span><span style="color: #000000">p[j].x)</span><span style="color: #000000">/</span><span style="color: #000000">2.0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v.x</span><span style="color: #000000">*=</span><span style="color: #000000">s;v.y</span><span style="color: #000000">*=</span><span style="color: #000000">s;ss</span><span style="color: #000000">+=</span><span style="color: #000000">s;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans.x</span><span style="color: #000000">+=</span><span style="color: #000000">v.x;ans.y</span><span style="color: #000000">+=</span><span style="color: #000000">v.y;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ans.x</span><span style="color: #000000">/=</span><span style="color: #000000">ss;ans.y</span><span style="color: #000000">/=</span><span style="color: #000000">ss;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(fabs(ans.x)</span><span style="color: #000000">&lt;</span><span style="color: #000000">0.000001</span><span style="color: #000000">)&nbsp;ans.x</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(fabs(ans.y)</span><span style="color: #000000">&lt;</span><span style="color: #000000">0.000001</span><span style="color: #000000">)&nbsp;ans.y</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%.2lf&nbsp;%.2lf\n</span><span style="color: #000000">"</span><span style="color: #000000">,ans.x,ans.y);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_531_679_Open_Image" onclick="this.style.display='none'; Codehighlighter1_531_679_Open_Text.style.display='none'; Codehighlighter1_531_679_Closed_Image.style.display='inline'; Codehighlighter1_531_679_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_531_679_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_531_679_Closed_Text.style.display='none'; Codehighlighter1_531_679_Open_Image.style.display='inline'; Codehighlighter1_531_679_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_531_679_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_531_679_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;cas,i;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">cas);<br /><img id="Codehighlighter1_577_666_Open_Image" onclick="this.style.display='none'; Codehighlighter1_577_666_Open_Text.style.display='none'; Codehighlighter1_577_666_Closed_Image.style.display='inline'; Codehighlighter1_577_666_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_577_666_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_577_666_Closed_Text.style.display='none'; Codehighlighter1_577_666_Open_Image.style.display='inline'; Codehighlighter1_577_666_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(cas</span><span style="color: #000000">--</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_577_666_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_577_666_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">n);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%lf%lf</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">p[i].x,</span><span style="color: #000000">&amp;</span><span style="color: #000000">p[i].y);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;process();<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>
<p><br /><br /></font></p><pre style="font-family: Courier New, Courier, monospace" class="sh_cpp sh_sourceCode"><span class="sh_preproc"><strong><font color="#00008b">#include</font></strong></span><span class="sh_string"><font color="#ff0000">&lt;stdio.h&gt;</font></span>
<span class="sh_preproc"><strong><font color="#00008b">#include</font></strong></span><span class="sh_string"><font color="#ff0000">&lt;math.h&gt;</font></span>
<span class="sh_preproc"><strong><font color="#00008b">#define</font></strong></span> MAX <span class="sh_number"><font color="#800080">1000001</font></span>
<span class="sh_keyword"><strong><font color="#0000ff">struct</font></strong></span><span class="sh_normal"> </span><span class="sh_classname"><font color="#008080">point</font></span><span class="sh_cbracket"><font color="#ff0000">{</font></span>
	<span class="sh_type"><font color="#006400">double</font></span> x<span class="sh_symbol"><font color="#8b0000">,</font></span>y<span class="sh_symbol"><font color="#8b0000">;</font></span>
<span class="sh_cbracket"><font color="#ff0000">}</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
<span class="sh_type"><font color="#006400">int</font></span> n<span class="sh_symbol"><font color="#8b0000">;</font></span>
<span class="sh_keyword"><strong><font color="#0000ff">struct</font></strong></span><span class="sh_normal"> </span><span class="sh_classname"><font color="#008080">point</font></span> p<span class="sh_symbol"><font color="#8b0000">[</font></span>MAX<span class="sh_symbol"><font color="#8b0000">],</font></span>v<span class="sh_symbol"><font color="#8b0000">,</font></span>ans<span class="sh_symbol"><font color="#8b0000">;</font></span>
<span class="sh_type"><font color="#006400">void</font></span> <span class="sh_function"><strong>process</strong></span><span class="sh_symbol"><font color="#8b0000">()</font></span><span class="sh_cbracket"><font color="#ff0000">{</font></span>
	<span class="sh_type"><font color="#006400">int</font></span> i<span class="sh_symbol"><font color="#8b0000">,</font></span>j<span class="sh_symbol"><font color="#8b0000">,</font></span>k<span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_type"><font color="#006400">double</font></span> s<span class="sh_symbol"><font color="#8b0000">,</font></span>ss<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
	ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">=</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_keyword"><strong><font color="#0000ff">for</font></strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span>i<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>i<span class="sh_symbol"><font color="#8b0000">&lt;</font></span>n<span class="sh_symbol"><font color="#8b0000">;</font></span>i<span class="sh_symbol"><font color="#8b0000">++)</font></span><span class="sh_cbracket"><font color="#ff0000">{</font></span>
		j<span class="sh_symbol"><font color="#8b0000">=(</font></span>i<span class="sh_number"><font color="#800080">+1</font></span><span class="sh_symbol"><font color="#8b0000">)%</font></span>n<span class="sh_symbol"><font color="#8b0000">;</font></span>
		v<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">=(</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>x<span class="sh_symbol"><font color="#8b0000">+</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>j<span class="sh_symbol"><font color="#8b0000">].</font></span>x<span class="sh_symbol"><font color="#8b0000">)/</font></span><span class="sh_number"><font color="#800080">3.0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
		v<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">=(</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>y<span class="sh_symbol"><font color="#8b0000">+</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>j<span class="sh_symbol"><font color="#8b0000">].</font></span>y<span class="sh_symbol"><font color="#8b0000">)/</font></span><span class="sh_number"><font color="#800080">3.0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
		s<span class="sh_symbol"><font color="#8b0000">=(</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>x<span class="sh_symbol"><font color="#8b0000">*</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>j<span class="sh_symbol"><font color="#8b0000">].</font></span>y<span class="sh_symbol"><font color="#8b0000">-</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>y<span class="sh_symbol"><font color="#8b0000">*</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>j<span class="sh_symbol"><font color="#8b0000">].</font></span>x<span class="sh_symbol"><font color="#8b0000">)/</font></span><span class="sh_number"><font color="#800080">2.0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
		v<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">*=</font></span>s<span class="sh_symbol"><font color="#8b0000">;</font></span>v<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">*=</font></span>s<span class="sh_symbol"><font color="#8b0000">;</font></span>ss<span class="sh_symbol"><font color="#8b0000">+=</font></span>s<span class="sh_symbol"><font color="#8b0000">;</font></span>
		ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">+=</font></span>v<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">;</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">+=</font></span>v<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_cbracket"><font color="#ff0000">}</font></span>
	ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">/=</font></span>ss<span class="sh_symbol"><font color="#8b0000">;</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">/=</font></span>ss<span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_keyword"><strong><font color="#0000ff">if</font></strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_function"><strong>fabs</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">)&lt;</font></span><span class="sh_number"><font color="#800080">0.000001</font></span><span class="sh_symbol"><font color="#8b0000">)</font></span> ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_keyword"><strong><font color="#0000ff">if</font></strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_function"><strong>fabs</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">)&lt;</font></span><span class="sh_number"><font color="#800080">0.000001</font></span><span class="sh_symbol"><font color="#8b0000">)</font></span> ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_function"><strong>printf</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_string"><font color="#ff0000">"%.2lf %.2lf</font></span><span class="sh_specialchar"><font color="#ffc0cb">\n</font></span><span class="sh_string"><font color="#ff0000">"</font></span><span class="sh_symbol"><font color="#8b0000">,</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>x<span class="sh_symbol"><font color="#8b0000">,</font></span>ans<span class="sh_symbol"><font color="#8b0000">.</font></span>y<span class="sh_symbol"><font color="#8b0000">);</font></span>
<span class="sh_cbracket"><font color="#ff0000">}</font></span>
<span class="sh_type"><font color="#006400">int</font></span> <span class="sh_function"><strong>main</strong></span><span class="sh_symbol"><font color="#8b0000">()</font></span><span class="sh_cbracket"><font color="#ff0000">{</font></span>
	<span class="sh_type"><font color="#006400">int</font></span> cas<span class="sh_symbol"><font color="#8b0000">,</font></span>i<span class="sh_symbol"><font color="#8b0000">;</font></span>
	<span class="sh_function"><strong>scanf</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_string"><font color="#ff0000">"%d"</font></span><span class="sh_symbol"><font color="#8b0000">,&amp;</font></span>cas<span class="sh_symbol"><font color="#8b0000">);</font></span>
	<span class="sh_keyword"><strong><font color="#0000ff">while</font></strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span>cas<span class="sh_symbol"><font color="#8b0000">--)</font></span><span class="sh_cbracket"><font color="#ff0000">{</font></span>
		<span class="sh_function"><strong>scanf</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_string"><font color="#ff0000">"%d"</font></span><span class="sh_symbol"><font color="#8b0000">,&amp;</font></span>n<span class="sh_symbol"><font color="#8b0000">);</font></span>
		<span class="sh_keyword"><strong><font color="#0000ff">for</font></strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span>i<span class="sh_symbol"><font color="#8b0000">=</font></span><span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>i<span class="sh_symbol"><font color="#8b0000">&lt;</font></span>n<span class="sh_symbol"><font color="#8b0000">;</font></span>i<span class="sh_symbol"><font color="#8b0000">++)</font></span>
			<span class="sh_function"><strong>scanf</strong></span><span class="sh_symbol"><font color="#8b0000">(</font></span><span class="sh_string"><font color="#ff0000">"%lf%lf"</font></span><span class="sh_symbol"><font color="#8b0000">,&amp;</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>x<span class="sh_symbol"><font color="#8b0000">,&amp;</font></span>p<span class="sh_symbol"><font color="#8b0000">[</font></span>i<span class="sh_symbol"><font color="#8b0000">].</font></span>y<span class="sh_symbol"><font color="#8b0000">);</font></span>
		<span class="sh_function"><strong>process</strong></span><span class="sh_symbol"><font color="#8b0000">();</font></span>
	<span class="sh_cbracket"><font color="#ff0000">}</font></span>
	<span class="sh_keyword"><strong><font color="#0000ff">return</font></strong></span> <span class="sh_number"><font color="#800080">0</font></span><span class="sh_symbol"><font color="#8b0000">;</font></span>
<span class="sh_cbracket"><font color="#ff0000">}</font></span></pre>
<p><br />int main()<br />{<br /><br />int T,i,j,num;<br />struct point re;<br />scanf("%d",&amp;T);<br />while(T--)<br />{<br />scanf("%d",&amp;num);<br />for(i = 0; i &lt; num ; i ++)<br />scanf("%lf %lf",&amp;data[i].x,&amp;data[i].y);<br /><br />re = bcenter(data,num);<br />printf("%.2lf %.2lf\n",re.x,re.y);<br />}<br />return 0;<br />}</p><img src ="http://www.cppblog.com/snowshine09/aggbug/156095.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-09-18 10:29 <a href="http://www.cppblog.com/snowshine09/archive/2011/09/18/156095.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdu 3591取石子（一堆）</title><link>http://www.cppblog.com/snowshine09/archive/2011/09/17/156044.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Sat, 17 Sep 2011 11:55:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/09/17/156044.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/156044.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/09/17/156044.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/156044.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/156044.html</trackback:ping><description><![CDATA[<p>hdu 3591</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cmath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">map</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">vector</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">iomanip</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_188_380_Open_Image" onclick="this.style.display='none'; Codehighlighter1_188_380_Open_Text.style.display='none'; Codehighlighter1_188_380_Closed_Image.style.display='inline'; Codehighlighter1_188_380_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_188_380_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_188_380_Closed_Text.style.display='none'; Codehighlighter1_188_380_Open_Image.style.display='inline'; Codehighlighter1_188_380_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_188_380_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_188_380_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;T,count</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">T;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(T</span><span style="color: #000000">--</span><span style="color: #000000">)<br /><img id="Codehighlighter1_228_367_Open_Image" onclick="this.style.display='none'; Codehighlighter1_228_367_Open_Text.style.display='none'; Codehighlighter1_228_367_Closed_Image.style.display='inline'; Codehighlighter1_228_367_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_228_367_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_228_367_Closed_Text.style.display='none'; Codehighlighter1_228_367_Open_Image.style.display='inline'; Codehighlighter1_228_367_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_228_367_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_228_367_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,k;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">n</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">k;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">Case&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">count</span><span style="color: #000000">++&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">&amp;</span><span style="color: #000000">1</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">k</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">||</span><span style="color: #000000">k</span><span style="color: #000000">&gt;=</span><span style="color: #000000">n)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">first</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">second</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div>
<p><br />//cankao others<br />本题类似我曾今玩过的的一个NDS解密游戏《雷顿教授与魔神之笛》里的一道谜题。游戏里是给你15个围成圈的水龙头，开始它们全都是打开漏水的。接着你要跟电脑博弈，从电脑开始，双方可以选择关闭连续的两个水龙头（当然，已关的不能再打开了）也可以只选择关掉一个，最终没水龙头可关的将失败。在没学相关知识之前那迷题一直让我挺头疼的。。。</p>
<p>那个游戏的答案解法是，由于电脑一定会先关掉两个水龙头，接着你只要关掉剩余水龙头的中间那个，因而将剩余的水龙头分成数目相等的两个部分。那后无论电脑操作哪一部分的一或二个水龙头，你只要一样对称地关掉另一部分得水龙头。那你一定会是胜利者！</p>
<p><br /></p>
<p>本题相当于是该迷题的一个拓展。</p>
<p>我们首先要分几种情况考虑：</p>
<p>1.当 &nbsp;K=1时，若N为奇数，则first wins，N为偶数则second wins。</p>
<p>2.当 &nbsp;K&gt;=N时，first wins。</p>
<p>3.当 &nbsp;N&gt;K&gt;1时，情况类似上面提到过的谜题，若first的最先操作使得剩下的水龙头为偶数，如果你能把剩下的取完那就直接胜利，如果不能那就拿走中间的若干个偶数个硬币使得剩下的硬币被分为数目相等的两堆。接着对方对某堆进行操作你就对另一堆进行同样的操作，这时是second wins。first的最先操作使得剩下的水龙头为奇数时同理可证second wins。</p>
<p>那就OK了。</p><img src ="http://www.cppblog.com/snowshine09/aggbug/156044.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-09-17 19:55 <a href="http://www.cppblog.com/snowshine09/archive/2011/09/17/156044.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>usaco_clocks dfs/bfs/位运算</title><link>http://www.cppblog.com/snowshine09/archive/2011/09/13/155641.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Tue, 13 Sep 2011 03:40:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/09/13/155641.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/155641.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/09/13/155641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/155641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/155641.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: The ClocksIOI'94 - Day 2Consider nine clocks arranged in a 3x3 array thusly: |-------| |-------| |-------| | | | | | | | |---O | |---O | | O | | | | | | | |-------| |-------| |-------| A B C |-------|...&nbsp;&nbsp;<a href='http://www.cppblog.com/snowshine09/archive/2011/09/13/155641.html'>阅读全文</a><img src ="http://www.cppblog.com/snowshine09/aggbug/155641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-09-13 11:40 <a href="http://www.cppblog.com/snowshine09/archive/2011/09/13/155641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>usaco_packrec暴搜</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/24/154232.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Wed, 24 Aug 2011 10:21:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/24/154232.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/154232.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/24/154232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/154232.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/154232.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这道题给了6个图，实际只需考虑5种（后两个相同）。最后一个模型自己没有抽象出来。还是逻辑清晰，比较不容易出错。头开始设许多临时变量，总是不知道具体值是多少，结果一直debug，还一直bug。。&#8857;﹏&#8857;b汗。。用4个rec结构记录比较好。最后一个模型，是左边两个，右边两个，然后根据两边上面矩形的高度情况，讨论矩形整体的宽。注意，自己设的变量最好还是写出来吧。此题竖着的边|，分别...&nbsp;&nbsp;<a href='http://www.cppblog.com/snowshine09/archive/2011/08/24/154232.html'>阅读全文</a><img src ="http://www.cppblog.com/snowshine09/aggbug/154232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-24 18:21 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/24/154232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DS_stack忆往昔——经常做错的一道铁路调度</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/24/154231.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Wed, 24 Aug 2011 10:14:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/24/154231.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/154231.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/24/154231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/154231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/154231.html</trackback:ping><description><![CDATA[shit！太弱了!!警醒！这回思路完全正确、结构也很清晰。但是还是会忽略细节。习惯太差！继续打基础！！Go on！Keep up!<br />stack 模拟，一个数组就可以搞定.
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdlib</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cmath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">algorithm</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,arr[</span><span style="color: #000000">100</span><span style="color: #000000">],stack[</span><span style="color: #000000">100</span><span style="color: #000000">],top</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;str[</span><span style="color: #000000">100</span><span style="color: #000000">];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;s2i(</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;s)<br /><img id="Codehighlighter1_157_212_Open_Image" onclick="this.style.display='none'; Codehighlighter1_157_212_Open_Text.style.display='none'; Codehighlighter1_157_212_Closed_Image.style.display='inline'; Codehighlighter1_157_212_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_157_212_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_157_212_Closed_Text.style.display='none'; Codehighlighter1_157_212_Open_Image.style.display='inline'; Codehighlighter1_157_212_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_157_212_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"  alt="" /></span><span id="Codehighlighter1_157_212_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&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">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">s)<br /><img id="Codehighlighter1_181_210_Open_Image" onclick="this.style.display='none'; Codehighlighter1_181_210_Open_Text.style.display='none'; Codehighlighter1_181_210_Closed_Image.style.display='inline'; Codehighlighter1_181_210_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_181_210_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_181_210_Closed_Text.style.display='none'; Codehighlighter1_181_210_Open_Image.style.display='inline'; Codehighlighter1_181_210_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_181_210_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"  alt="" /></span><span id="Codehighlighter1_181_210_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arr[i</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=*</span><span style="color: #000000">s</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 /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;judge(</span><span style="color: #0000ff">int</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;ai)<br /><img id="Codehighlighter1_234_655_Open_Image" onclick="this.style.display='none'; Codehighlighter1_234_655_Open_Text.style.display='none'; Codehighlighter1_234_655_Closed_Image.style.display='inline'; Codehighlighter1_234_655_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_234_655_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_234_655_Closed_Text.style.display='none'; Codehighlighter1_234_655_Open_Image.style.display='inline'; Codehighlighter1_234_655_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_234_655_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"  alt="" /></span><span id="Codehighlighter1_234_655_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,</span><span style="color: #000000">*</span><span style="color: #000000">pi</span><span style="color: #000000">=</span><span style="color: #000000">ai;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">;i</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_271_538_Open_Image" onclick="this.style.display='none'; Codehighlighter1_271_538_Open_Text.style.display='none'; Codehighlighter1_271_538_Closed_Image.style.display='inline'; Codehighlighter1_271_538_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_271_538_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_271_538_Closed_Text.style.display='none'; Codehighlighter1_271_538_Open_Image.style.display='inline'; Codehighlighter1_271_538_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_271_538_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"  alt="" /></span><span id="Codehighlighter1_271_538_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">pi</span><span style="color: #000000">==</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_288_314_Open_Image" onclick="this.style.display='none'; Codehighlighter1_288_314_Open_Text.style.display='none'; Codehighlighter1_288_314_Closed_Image.style.display='inline'; Codehighlighter1_288_314_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_288_314_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_288_314_Closed_Text.style.display='none'; Codehighlighter1_288_314_Open_Image.style.display='inline'; Codehighlighter1_288_314_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_288_314_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"  alt="" /></span><span id="Codehighlighter1_288_314_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pi</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">pi</span><span style="color: #000000">&gt;</span><span style="color: #000000">i)</span><span style="color: #008000">//</span><span style="color: #008000">push&nbsp;i</span><span style="color: #008000"><br /><img id="Codehighlighter1_343_379_Open_Image" onclick="this.style.display='none'; Codehighlighter1_343_379_Open_Text.style.display='none'; Codehighlighter1_343_379_Closed_Image.style.display='inline'; Codehighlighter1_343_379_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_343_379_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_343_379_Closed_Text.style.display='none'; Codehighlighter1_343_379_Open_Image.style.display='inline'; Codehighlighter1_343_379_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 id="Codehighlighter1_343_379_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"  alt="" /></span><span id="Codehighlighter1_343_379_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stack[top</span><span style="color: #000000">++</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">i;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">continue</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">pi</span><span style="color: #000000">&lt;</span><span style="color: #000000">i)</span><span style="color: #008000">//</span><span style="color: #008000">pop&nbsp;i</span><span style="color: #008000"><br /><img id="Codehighlighter1_407_535_Open_Image" onclick="this.style.display='none'; Codehighlighter1_407_535_Open_Text.style.display='none'; Codehighlighter1_407_535_Closed_Image.style.display='inline'; Codehighlighter1_407_535_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_407_535_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_407_535_Closed_Text.style.display='none'; Codehighlighter1_407_535_Open_Image.style.display='inline'; Codehighlighter1_407_535_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 id="Codehighlighter1_407_535_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"  alt="" /></span><span id="Codehighlighter1_407_535_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(stack[</span><span style="color: #000000">--</span><span style="color: #000000">top]</span><span style="color: #000000">==*</span><span style="color: #000000">pi)<br /><img id="Codehighlighter1_437_479_Open_Image" onclick="this.style.display='none'; Codehighlighter1_437_479_Open_Text.style.display='none'; Codehighlighter1_437_479_Closed_Image.style.display='inline'; Codehighlighter1_437_479_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_437_479_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_437_479_Closed_Text.style.display='none'; Codehighlighter1_437_479_Open_Image.style.display='inline'; Codehighlighter1_437_479_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_437_479_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"  alt="" /></span><span id="Codehighlighter1_437_479_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pi</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="color: #000000">--</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">忘记此处，这时i没有处理，需恢复</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;<br /><img id="Codehighlighter1_493_531_Open_Image" onclick="this.style.display='none'; Codehighlighter1_493_531_Open_Text.style.display='none'; Codehighlighter1_493_531_Closed_Image.style.display='inline'; Codehighlighter1_493_531_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_493_531_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_493_531_Closed_Text.style.display='none'; Codehighlighter1_493_531_Open_Image.style.display='inline'; Codehighlighter1_493_531_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_493_531_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"  alt="" /></span><span id="Codehighlighter1_493_531_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">no\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(top</span><span style="color: #000000">&gt;</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img id="Codehighlighter1_555_634_Open_Image" onclick="this.style.display='none'; Codehighlighter1_555_634_Open_Text.style.display='none'; Codehighlighter1_555_634_Closed_Image.style.display='inline'; Codehighlighter1_555_634_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_555_634_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_555_634_Closed_Text.style.display='none'; Codehighlighter1_555_634_Open_Image.style.display='inline'; Codehighlighter1_555_634_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_555_634_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"  alt="" /></span><span id="Codehighlighter1_555_634_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">pi</span><span style="color: #000000">!=</span><span style="color: #000000">stack[</span><span style="color: #000000">--</span><span style="color: #000000">top])<br /><img id="Codehighlighter1_583_618_Open_Image" onclick="this.style.display='none'; Codehighlighter1_583_618_Open_Text.style.display='none'; Codehighlighter1_583_618_Closed_Image.style.display='inline'; Codehighlighter1_583_618_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_583_618_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_583_618_Closed_Text.style.display='none'; Codehighlighter1_583_618_Open_Image.style.display='inline'; Codehighlighter1_583_618_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_583_618_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"  alt="" /></span><span id="Codehighlighter1_583_618_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">no\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;pi</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">yes\n</span><span style="color: #000000">"</span><span style="color: #000000">);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_671_887_Open_Image" onclick="this.style.display='none'; Codehighlighter1_671_887_Open_Text.style.display='none'; Codehighlighter1_671_887_Closed_Image.style.display='inline'; Codehighlighter1_671_887_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_671_887_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_671_887_Closed_Text.style.display='none'; Codehighlighter1_671_887_Open_Image.style.display='inline'; Codehighlighter1_671_887_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_671_887_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"  alt="" /></span><span id="Codehighlighter1_671_887_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;t,k;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">t);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(t</span><span style="color: #000000">--</span><span style="color: #000000">)<br /><img id="Codehighlighter1_713_874_Open_Image" onclick="this.style.display='none'; Codehighlighter1_713_874_Open_Text.style.display='none'; Codehighlighter1_713_874_Closed_Image.style.display='inline'; Codehighlighter1_713_874_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_713_874_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_713_874_Closed_Text.style.display='none'; Codehighlighter1_713_874_Open_Image.style.display='inline'; Codehighlighter1_713_874_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_713_874_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"  alt="" /></span><span id="Codehighlighter1_713_874_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;top</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(str,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(str));</span><span style="color: #008000">//</span><span style="color: #008000">此三处一再忘记复位，WA无数次。。！！！！！</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(stack,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(stack));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">n);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,str);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s2i(str);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;judge(arr);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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 /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div><img src ="http://www.cppblog.com/snowshine09/aggbug/154231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-24 18:14 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/24/154231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Dp poj 1159(multiple solutions)</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/19/153852.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Fri, 19 Aug 2011 07:12:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/19/153852.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/153852.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/19/153852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/153852.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/153852.html</trackback:ping><description><![CDATA[<div>(1)思路：最长公共子序列：ans=L-LCS(s,^s)<br />(2)DP 状态：dp[i][j]为i to j，需要加入的字符。初始：dp[i][i]=0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分2种情况：s[i]==s[j]则dp[i][j]=dp[i+1][j-1]<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;s[i]!=s[j]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=Min(dp[i+1][j],dp[i][j-1])+1 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]</span><span style="color: #000000">=</span><span style="color: #000000">cal(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">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;dp[i][j];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img id="Codehighlighter1_51_134_Open_Image" onclick="this.style.display='none'; Codehighlighter1_51_134_Open_Text.style.display='none'; Codehighlighter1_51_134_Closed_Image.style.display='inline'; Codehighlighter1_51_134_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_51_134_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_51_134_Closed_Text.style.display='none'; Codehighlighter1_51_134_Open_Image.style.display='inline'; Codehighlighter1_51_134_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_51_134_Closed_Text">/**/</span><span id="Codehighlighter1_51_134_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">dp[i][j]=MIN(cal(i+1,j-1)+2,cal(i+1,j)+1);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]=MIN(dp[i][j],cal(i,j-1)+1);</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]</span><span style="color: #000000">=</span><span style="color: #000000">MIN(cal(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">,cal(i,j</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;dp[i][j];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />}<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_211_447_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_447_Open_Text.style.display='none'; Codehighlighter1_211_447_Closed_Image.style.display='inline'; Codehighlighter1_211_447_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_211_447_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_211_447_Closed_Text.style.display='none'; Codehighlighter1_211_447_Open_Image.style.display='inline'; Codehighlighter1_211_447_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_211_447_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_211_447_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,k,mid;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">N);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">for(i=0;i&lt;N;i++)</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,s);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(s);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">printf("%d\n",len);</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="color: #000000">=</span><span style="color: #000000">len</span><span style="color: #000000">/</span><span style="color: #000000">2</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;memset(dp,</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(dp));</span><span style="color: #008000">//</span><span style="color: #008000">unsigned&nbsp;to&nbsp;the&nbsp;utmost</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dp[mid][mid]</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">,cal(</span><span style="color: #000000">0</span><span style="color: #000000">,len</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">));<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div>(3)节省空间，用dp[2][5002]的数组存放。因为i-1用过后，就不再用了<br />滚动数组最直接的想法就是利用原来第i-1行的空间来计算接下来要算的i+1行 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdlib</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cmath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;MIN(a,b)&nbsp;(a)&lt;(b)?(a):(b)</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;s[</span><span style="color: #000000">5002</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;dp[</span><span style="color: #000000">2</span><span style="color: #000000">][</span><span style="color: #000000">5002</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_145_387_Open_Image" onclick="this.style.display='none'; Codehighlighter1_145_387_Open_Text.style.display='none'; Codehighlighter1_145_387_Closed_Image.style.display='inline'; Codehighlighter1_145_387_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_145_387_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_145_387_Closed_Text.style.display='none'; Codehighlighter1_145_387_Open_Image.style.display='inline'; Codehighlighter1_145_387_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_145_387_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_145_387_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,k,l,N;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">N);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,s);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">N</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">;i</span><span style="color: #000000">--</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">N;</span><span style="color: #000000">++</span><span style="color: #000000">j)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(s[i]</span><span style="color: #000000">==</span><span style="color: #000000">s[j])dp[i</span><span style="color: #000000">&amp;</span><span style="color: #000000">1</span><span style="color: #000000">][j]</span><span style="color: #000000">=</span><span style="color: #000000">dp[(i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</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">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;dp[i</span><span style="color: #000000">&amp;</span><span style="color: #000000">1</span><span style="color: #000000">][j]</span><span style="color: #000000">=</span><span style="color: #000000">MIN(dp[(i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">&amp;</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">,dp[i</span><span style="color: #000000">&amp;</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: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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[(i</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)</span><span style="color: #000000">%</span><span style="color: #000000">2</span><span style="color: #000000">][N</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><br />这样就可以用一个array[2][]的数组，在两行之间交替计算 <br /><br />（4）<br />特殊情况：计算array[i][j]所用到的第i-1行的元素全部都在j列的左边 <br />array[i-1][j]和array[i-1][j-1] <br />然后这种情况可以只用一维数组，按照从右到左的顺序计算<br />array[j] = array[j-1]+array[j] <br />重复i次 <br />每次从右到左将一行的元素都按照array[j] = array[j-1]+array[j]计算 <br />假设这个一维数组现在存的是i-1行的元素，计算第i行的元素时，直接将它记<br />录在这个一维数组对应的位置上 <br />因为是从右向左计算，而计算只需要左边的元素，所以新存进去的元素不会影响后面元素的值<br /><br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_50_452_Open_Image" onclick="this.style.display='none'; Codehighlighter1_50_452_Open_Text.style.display='none'; Codehighlighter1_50_452_Closed_Image.style.display='inline'; Codehighlighter1_50_452_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_50_452_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_50_452_Closed_Text.style.display='none'; Codehighlighter1_50_452_Open_Image.style.display='inline'; Codehighlighter1_50_452_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_50_452_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_50_452_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">5002</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;f[</span><span style="color: #000000">5002</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i,j,n,t,tp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%s</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">n,a</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;memset(f,</span><span style="color: #000000">0</span><span style="color: #000000">,</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(f));<br /><img id="Codehighlighter1_174_408_Open_Image" onclick="this.style.display='none'; Codehighlighter1_174_408_Open_Text.style.display='none'; Codehighlighter1_174_408_Closed_Image.style.display='inline'; Codehighlighter1_174_408_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_174_408_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_174_408_Closed_Text.style.display='none'; Codehighlighter1_174_408_Open_Image.style.display='inline'; Codehighlighter1_174_408_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&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">;i</span><span style="color: #000000">&lt;=</span><span style="color: #000000">n;i</span><span style="color: #000000">++</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_174_408_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_174_408_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">f[i-1,j-1]复位，一开始忘记了，老是wa，郁闷</span><span style="color: #008000"><br /><img id="Codehighlighter1_233_402_Open_Image" onclick="this.style.display='none'; Codehighlighter1_233_402_Open_Text.style.display='none'; Codehighlighter1_233_402_Closed_Image.style.display='inline'; Codehighlighter1_233_402_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_233_402_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_233_402_Closed_Text.style.display='none'; Codehighlighter1_233_402_Open_Image.style.display='inline'; Codehighlighter1_233_402_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif"></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">n;j</span><span style="color: #000000">&gt;=</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">--</span><span style="color: #000000">)</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_233_402_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_233_402_Open_Text"><span style="color: #000000">{<br /><img id="Codehighlighter1_252_318_Open_Image" onclick="this.style.display='none'; Codehighlighter1_252_318_Open_Text.style.display='none'; Codehighlighter1_252_318_Closed_Image.style.display='inline'; Codehighlighter1_252_318_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_252_318_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_252_318_Closed_Text.style.display='none'; Codehighlighter1_252_318_Open_Image.style.display='inline'; Codehighlighter1_252_318_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(a[i]</span><span style="color: #000000">==</span><span style="color: #000000">a[j])</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_252_318_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_252_318_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=</span><span style="color: #000000">f[j];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[j]</span><span style="color: #000000">=</span><span style="color: #000000">tp</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">f[i,j]=f[i-1,j-1]+1</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp</span><span style="color: #000000">=</span><span style="color: #000000">t;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_327_398_Open_Image" onclick="this.style.display='none'; Codehighlighter1_327_398_Open_Text.style.display='none'; Codehighlighter1_327_398_Closed_Image.style.display='inline'; Codehighlighter1_327_398_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_327_398_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_327_398_Closed_Text.style.display='none'; Codehighlighter1_327_398_Open_Image.style.display='inline'; Codehighlighter1_327_398_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_327_398_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_327_398_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tp</span><span style="color: #000000">=</span><span style="color: #000000">f[j];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">(f[j]</span><span style="color: #000000">&lt;</span><span style="color: #000000">f[j</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">])&nbsp;f[j]</span><span style="color: #000000">=</span><span style="color: #000000">f[j</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">];&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">f[i-1,j]&lt;f[i,j-1]</span><span style="color: #008000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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">,n</span><span style="color: #000000">-</span><span style="color: #000000">f[</span><span style="color: #000000">1</span><span style="color: #000000">]);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div> <br /><br /><br /><br /></div><img src ="http://www.cppblog.com/snowshine09/aggbug/153852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-19 15:12 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/19/153852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线性DP 两次最长上升子序列 1836_POJ</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/14/153353.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Sun, 14 Aug 2011 07:30:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/14/153353.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/153353.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/14/153353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/153353.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/153353.html</trackback:ping><description><![CDATA[<p>题意：<br />n个士兵，选ct个人出队，使得重新排队得到的队伍每个人都可以向左或向右看到无穷远，没有比他高或同样高的视觉障碍（人）。求ct最小值。<br /><br />分析：<br /><br />要从左无障碍的看到无限远，则需有左边的人都比他低，同理，右边也一样。故找到站到中间的一个人（or two），他的两边的最长子序列之和最大。即留下的士兵最多，即出队的人最少。</p>
<h2><font color="blue">使剩下的队列满足a1 &lt; a2 &lt; a3 ... &lt; a(i ) &lt;=&gt; a(i+1) &gt; a(i+2) &gt; .. a(n-1) &gt; a(n)</font></h2>
<p>&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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdlib</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cmath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;d[</span><span style="color: #000000">1010</span><span style="color: #000000">],rev[</span><span style="color: #000000">1010</span><span style="color: #000000">],index[</span><span style="color: #000000">10</span><span style="color: #000000">];<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;hi[</span><span style="color: #000000">1010</span><span style="color: #000000">];<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_132_1077_Open_Image" onclick="this.style.display='none'; Codehighlighter1_132_1077_Open_Text.style.display='none'; Codehighlighter1_132_1077_Closed_Image.style.display='inline'; Codehighlighter1_132_1077_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_132_1077_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_132_1077_Closed_Text.style.display='none'; Codehighlighter1_132_1077_Open_Image.style.display='inline'; Codehighlighter1_132_1077_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_132_1077_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_132_1077_Open_Text"><span style="color: #000000">{<br /><img alt="" 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,tmp</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,i,j,max</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,ct</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">double</span><span style="color: #000000">&nbsp;db;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&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">n);<br /><img alt="" 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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_211_277_Open_Image" onclick="this.style.display='none'; Codehighlighter1_211_277_Open_Text.style.display='none'; Codehighlighter1_211_277_Closed_Image.style.display='inline'; Codehighlighter1_211_277_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_211_277_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_211_277_Closed_Text.style.display='none'; Codehighlighter1_211_277_Open_Image.style.display='inline'; Codehighlighter1_211_277_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_211_277_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_211_277_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%lf</span><span style="color: #000000">"</span><span style="color: #000000">,</span><span style="color: #000000">&amp;</span><span style="color: #000000">hi[i]);</span><span style="color: #008000">//</span><span style="color: #008000">双精度浮点数输入须为%lf，而非%f</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d[i]</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rev[i]</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" 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">scanf("%f",&amp;db);<br /><img alt="" 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">d[0]=1;</span><span style="color: #008000"><br /><img alt="" 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">(i</span><span style="color: #000000">=</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_329_418_Open_Image" onclick="this.style.display='none'; Codehighlighter1_329_418_Open_Text.style.display='none'; Codehighlighter1_329_418_Closed_Image.style.display='inline'; Codehighlighter1_329_418_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_329_418_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_329_418_Closed_Text.style.display='none'; Codehighlighter1_329_418_Open_Image.style.display='inline'; Codehighlighter1_329_418_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_329_418_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_329_418_Open_Text"><span style="color: #000000">{<br /><img alt="" 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">(j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">i;</span><span style="color: #000000">++</span><span style="color: #000000">j)<br /><img alt="" 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">(hi[j]</span><span style="color: #000000">&lt;</span><span style="color: #000000">hi[i]</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">d[j]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">&gt;</span><span style="color: #000000">d[i])<br /><img alt="" 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;d[i]</span><span style="color: #000000">=</span><span style="color: #000000">d[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">正序以i结尾的最长上升子序列长度</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" 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">n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">;</span><span style="color: #000000">--</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_442_541_Open_Image" onclick="this.style.display='none'; Codehighlighter1_442_541_Open_Text.style.display='none'; Codehighlighter1_442_541_Closed_Image.style.display='inline'; Codehighlighter1_442_541_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_442_541_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_442_541_Closed_Text.style.display='none'; Codehighlighter1_442_541_Open_Image.style.display='inline'; Codehighlighter1_442_541_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_442_541_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_442_541_Open_Text"><span style="color: #000000">{<br /><img alt="" 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">(j</span><span style="color: #000000">=</span><span style="color: #000000">n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;j</span><span style="color: #000000">&gt;</span><span style="color: #000000">i;</span><span style="color: #000000">--</span><span style="color: #000000">j)<br /><img alt="" 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">(hi[j]</span><span style="color: #000000">&lt;</span><span style="color: #000000">hi[i]</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">rev[i]</span><span style="color: #000000">&lt;</span><span style="color: #000000">rev[j]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)<br /><img alt="" 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;rev[i]</span><span style="color: #000000">=</span><span style="color: #000000">rev[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">逆序以i结尾的最长上升子序列长度</span><span style="color: #008000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" 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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">n;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_562_825_Open_Image" onclick="this.style.display='none'; Codehighlighter1_562_825_Open_Text.style.display='none'; Codehighlighter1_562_825_Closed_Image.style.display='inline'; Codehighlighter1_562_825_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_562_825_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_562_825_Closed_Text.style.display='none'; Codehighlighter1_562_825_Open_Image.style.display='inline'; Codehighlighter1_562_825_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_562_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_562_825_Open_Text"><span style="color: #000000">{<br /><img alt="" 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">(d[i]</span><span style="color: #000000">+</span><span style="color: #000000">rev[i]</span><span style="color: #000000">&gt;</span><span style="color: #000000">max)</span><span style="color: #008000">//</span><span style="color: #008000">find&nbsp;the&nbsp;highest&nbsp;one&nbsp;int&nbsp;the&nbsp;middle,keep&nbsp;its&nbsp;index&nbsp;in&nbsp;record</span><span style="color: #008000"><br /><img id="Codehighlighter1_650_699_Open_Image" onclick="this.style.display='none'; Codehighlighter1_650_699_Open_Text.style.display='none'; Codehighlighter1_650_699_Closed_Image.style.display='inline'; Codehighlighter1_650_699_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_650_699_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_650_699_Closed_Text.style.display='none'; Codehighlighter1_650_699_Open_Image.style.display='inline'; Codehighlighter1_650_699_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 id="Codehighlighter1_650_699_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_650_699_Open_Text"><span style="color: #000000">{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="color: #000000">=</span><span style="color: #000000">d[i]</span><span style="color: #000000">+</span><span style="color: #000000">rev[i];<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">i;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img alt="" 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 /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(d[i]</span><span style="color: #000000">+</span><span style="color: #000000">rev[i]</span><span style="color: #000000">==</span><span style="color: #000000">max</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">hi[i]</span><span style="color: #000000">==</span><span style="color: #000000">hi[index[</span><span style="color: #000000">0</span><span style="color: #000000">]])</span><span style="color: #008000">//</span><span style="color: #008000">&amp;&amp;hi[i]==hi[index[0]]漏掉则出错。此条件判断是否有两个相等的最高顶点。</span><span style="color: #008000"><br /><img id="Codehighlighter1_799_822_Open_Image" onclick="this.style.display='none'; Codehighlighter1_799_822_Open_Text.style.display='none'; Codehighlighter1_799_822_Closed_Image.style.display='inline'; Codehighlighter1_799_822_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_799_822_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_799_822_Closed_Text.style.display='none'; Codehighlighter1_799_822_Open_Image.style.display='inline'; Codehighlighter1_799_822_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 id="Codehighlighter1_799_822_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 alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_799_822_Open_Text"><span style="color: #000000">{<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;index[</span><span style="color: #000000">++</span><span style="color: #000000">tmp]</span><span style="color: #000000">=</span><span style="color: #000000">i;<br /><img alt="" 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 /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;ct</span><span style="color: #000000">=</span><span style="color: #000000">index[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">d[index[</span><span style="color: #000000">0</span><span style="color: #000000">]]</span><span style="color: #000000">+</span><span style="color: #000000">n</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">index[tmp]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">rev[index[tmp]];</span><span style="color: #008000">//</span><span style="color: #008000">b4&nbsp;and&nbsp;after&nbsp;of&nbsp;3&nbsp;parts:before&nbsp;index[0];between&nbsp;o~tmp;after&nbsp;index[tmp]</span><span style="color: #008000"><br /><img alt="" 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">(i</span><span style="color: #000000">=</span><span style="color: #000000">index[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">index[tmp];</span><span style="color: #000000">++</span><span style="color: #000000">i)</span><span style="color: #008000">//</span><span style="color: #008000">intermediate&nbsp;part</span><span style="color: #008000"><br /><img alt="" 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">(hi[i]</span><span style="color: #000000">&lt;</span><span style="color: #000000">hi[index[</span><span style="color: #000000">0</span><span style="color: #000000">]])ct</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top" />&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">,ct);<br /><img alt="" 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 /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br /><img alt="" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p><br /><br />&nbsp;</p><img src ="http://www.cppblog.com/snowshine09/aggbug/153353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-14 15:30 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/14/153353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>线性DP——POJ 3276</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/13/153303.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Sat, 13 Aug 2011 14:13:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/13/153303.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/153303.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/13/153303.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/153303.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/153303.html</trackback:ping><description><![CDATA[<p><span style="color: #ff0000" color="#ff0000">问题</span></p>
<p>给定你一个字符串，和n个单词构成的字典。让你求出在字符串中最小删去几个字母，使得剩下的字符串能够由字典中的若干个单词构成。输出最少删去的字母的个数。</p><br /><span>分析<br />考虑给定字符串中第i个字符，可能删去，可能保留。&#8212;&#8212;定义划分状态的关键。<br />d[i]=Min{d[i-1]+1,make(i)}//delete vs not delete <br /><br />如果不删去，则它一定是作为某个单词的末尾。故与该位置前的状态有关系。make(i)中，要比较，所有字典中以msg[i]结尾的单词：若要保留，则此过程中删去字母个数ct,return 就是Min{d[该单词首字母的前一个字符位置]+ct} 
<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdio</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstring</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cmath</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" />#include</span><span style="color: #000000">&lt;</span><span style="color: #000000">cstdlib</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;INF&nbsp;1000000</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;MIN(a,b)&nbsp;(a)&gt;(b)?(b):(a)</span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;N,L;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;dic[</span><span style="color: #000000">600</span><span style="color: #000000">][</span><span style="color: #000000">26</span><span style="color: #000000">],msg[</span><span style="color: #000000">305</span><span style="color: #000000">];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;f[</span><span style="color: #000000">305</span><span style="color: #000000">];</span><span style="color: #008000">//</span><span style="color: #008000">记录第i位前丢弃的最少字母数</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;make(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m)<br /><img id="Codehighlighter1_204_914_Open_Image" onclick="this.style.display='none'; Codehighlighter1_204_914_Open_Text.style.display='none'; Codehighlighter1_204_914_Closed_Image.style.display='inline'; Codehighlighter1_204_914_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_204_914_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_204_914_Closed_Text.style.display='none'; Codehighlighter1_204_914_Open_Image.style.display='inline'; Codehighlighter1_204_914_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_204_914_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"  alt="" /></span><span id="Codehighlighter1_204_914_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;k,j,ct</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,n</span><span style="color: #000000">=</span><span style="color: #000000">m,t,re</span><span style="color: #000000">=</span><span style="color: #000000">INF;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(k</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;k</span><span style="color: #000000">&lt;</span><span style="color: #000000">N;</span><span style="color: #000000">++</span><span style="color: #000000">k)<br /><img id="Codehighlighter1_253_795_Open_Image" onclick="this.style.display='none'; Codehighlighter1_253_795_Open_Text.style.display='none'; Codehighlighter1_253_795_Closed_Image.style.display='inline'; Codehighlighter1_253_795_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_253_795_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_253_795_Closed_Text.style.display='none'; Codehighlighter1_253_795_Open_Image.style.display='inline'; Codehighlighter1_253_795_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_253_795_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"  alt="" /></span><span id="Codehighlighter1_253_795_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(dic[k][strlen(dic[k])</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">==</span><span style="color: #000000">msg[m])</span><span style="color: #008000">//</span><span style="color: #008000">若写m为n此处n=0,WA</span><span style="color: #008000"><br /><img id="Codehighlighter1_311_792_Open_Image" onclick="this.style.display='none'; Codehighlighter1_311_792_Open_Text.style.display='none'; Codehighlighter1_311_792_Closed_Image.style.display='inline'; Codehighlighter1_311_792_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_311_792_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_311_792_Closed_Text.style.display='none'; Codehighlighter1_311_792_Open_Image.style.display='inline'; Codehighlighter1_311_792_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 id="Codehighlighter1_311_792_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"  alt="" /></span><span id="Codehighlighter1_311_792_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">=</span><span style="color: #000000">m;ct</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">strlen(dic[k])</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(j</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">)<br /><img id="Codehighlighter1_371_532_Open_Image" onclick="this.style.display='none'; Codehighlighter1_371_532_Open_Text.style.display='none'; Codehighlighter1_371_532_Closed_Image.style.display='inline'; Codehighlighter1_371_532_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_371_532_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_371_532_Closed_Text.style.display='none'; Codehighlighter1_371_532_Open_Image.style.display='inline'; Codehighlighter1_371_532_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_371_532_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"  alt="" /></span><span id="Codehighlighter1_371_532_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(n</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">msg[n]</span><span style="color: #000000">!=</span><span style="color: #000000">dic[k][j])<br /><img id="Codehighlighter1_412_439_Open_Image" onclick="this.style.display='none'; Codehighlighter1_412_439_Open_Text.style.display='none'; Codehighlighter1_412_439_Closed_Image.style.display='inline'; Codehighlighter1_412_439_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_412_439_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_412_439_Closed_Text.style.display='none'; Codehighlighter1_412_439_Open_Image.style.display='inline'; Codehighlighter1_412_439_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_412_439_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"  alt="" /></span><span id="Codehighlighter1_412_439_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000">--</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ct</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">(n</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">msg[n]</span><span style="color: #000000">==</span><span style="color: #000000">dic[k][j])n</span><span style="color: #000000">--</span><span style="color: #000000">;</span><span style="color: #008000">//</span><span style="color: #008000">当n小于0时说明此单词比该msgd第n位前的字串长</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="color: #000000">--</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">if(j==-1&amp;&amp;ct+f[n-1]&lt;re)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;re=ct+f[n-1];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">t=n;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">}</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></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">(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">说明字典中存在以msg【n】结尾的子串=该单词</span><span style="color: #008000"><br /><img id="Codehighlighter1_651_788_Open_Image" onclick="this.style.display='none'; Codehighlighter1_651_788_Open_Text.style.display='none'; Codehighlighter1_651_788_Closed_Image.style.display='inline'; Codehighlighter1_651_788_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_651_788_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_651_788_Closed_Text.style.display='none'; Codehighlighter1_651_788_Open_Image.style.display='inline'; Codehighlighter1_651_788_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;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_651_788_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"  alt="" /></span><span id="Codehighlighter1_651_788_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">(n</span><span style="color: #000000">&gt;=</span><span style="color: #000000">0</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">ct</span><span style="color: #000000">+</span><span style="color: #000000">f[n]</span><span style="color: #000000">&lt;</span><span style="color: #000000">re)</span><span style="color: #008000">//</span><span style="color: #008000">由于上一个if语句多减了一次1，所以此时perhaps&nbsp;n&lt;0</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re</span><span style="color: #000000">=</span><span style="color: #000000">ct</span><span style="color: #000000">+</span><span style="color: #000000">f[n];<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(n</span><span style="color: #000000">&lt;</span><span style="color: #000000">0</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">ct</span><span style="color: #000000">&lt;</span><span style="color: #000000">re)re</span><span style="color: #000000">=</span><span style="color: #000000">ct;</span><span style="color: #008000">//</span><span style="color: #008000">此时说明msg中的该单词恰好是从msg[0]开始的</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" /></span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_798_897_Open_Image" onclick="this.style.display='none'; Codehighlighter1_798_897_Open_Text.style.display='none'; Codehighlighter1_798_897_Closed_Image.style.display='inline'; Codehighlighter1_798_897_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_798_897_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_798_897_Closed_Text.style.display='none'; Codehighlighter1_798_897_Open_Image.style.display='inline'; Codehighlighter1_798_897_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_798_897_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_798_897_Open_Text"><span style="color: #008000">/*</span><span style="color: #008000">if(re==INF)头开始误导了，想着总是加一，不对。其实是对的，会自己判断选择到达该状态的其他路径，<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;f[m-1]==0?0:f[m-1]+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;故此处多余</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;re;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /><img id="Codehighlighter1_927_1429_Open_Image" onclick="this.style.display='none'; Codehighlighter1_927_1429_Open_Text.style.display='none'; Codehighlighter1_927_1429_Closed_Image.style.display='inline'; Codehighlighter1_927_1429_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"><img id="Codehighlighter1_927_1429_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_927_1429_Closed_Text.style.display='none'; Codehighlighter1_927_1429_Open_Image.style.display='inline'; Codehighlighter1_927_1429_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" align="top"></span><span id="Codehighlighter1_927_1429_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"  alt="" /></span><span id="Codehighlighter1_927_1429_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;len,i,j,k;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">N);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">len);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,msg);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">for(i=0;i&lt;len;i++)调试时的代码一定要记得注释掉！！！WA两次因此。太suck了<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;printf("%c&nbsp;",msg[i]);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">printf("\n");<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">for(i=0;i&lt;len;i++)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;printf("%-2d",i);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">printf("\n");</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">N;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img id="Codehighlighter1_1176_1201_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1176_1201_Open_Text.style.display='none'; Codehighlighter1_1176_1201_Closed_Image.style.display='inline'; Codehighlighter1_1176_1201_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1176_1201_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1176_1201_Closed_Text.style.display='none'; Codehighlighter1_1176_1201_Open_Image.style.display='inline'; Codehighlighter1_1176_1201_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1176_1201_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"  alt="" /></span><span id="Codehighlighter1_1176_1201_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,dic[i]);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="color: #000000">=</span><span style="color: #000000">strlen(msg);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;f[</span><span style="color: #000000">0</span><span style="color: #000000">]</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">初始状态可能不为1，即第一个字符也可能作为字典单词的最后一个字母，此时该单词位单字母单词</span><span style="color: #008000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /></span><span style="color: #000000">&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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">N;</span><span style="color: #000000">++</span><span style="color: #000000">i)<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(strlen(dic[i])</span><span style="color: #000000">==</span><span style="color: #000000">1</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">dic[i][</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">==</span><span style="color: #000000">msg[</span><span style="color: #000000">0</span><span style="color: #000000">])f[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">;i</span><span style="color: #000000">&lt;</span><span style="color: #000000">len;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_1365_1398_Open_Image" onclick="this.style.display='none'; Codehighlighter1_1365_1398_Open_Text.style.display='none'; Codehighlighter1_1365_1398_Closed_Image.style.display='inline'; Codehighlighter1_1365_1398_Closed_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top"><img id="Codehighlighter1_1365_1398_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_1365_1398_Closed_Text.style.display='none'; Codehighlighter1_1365_1398_Open_Image.style.display='inline'; Codehighlighter1_1365_1398_Open_Text.style.display='inline';" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_1365_1398_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"  alt="" /></span><span id="Codehighlighter1_1365_1398_Open_Text"><span style="color: #000000">{<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f[i]</span><span style="color: #000000">=</span><span style="color: #000000">MIN(f[i</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">,make(i));<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&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">,f[len</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">]);<br /><img src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div><br /><br /></span><img src ="http://www.cppblog.com/snowshine09/aggbug/153303.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-13 22:13 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/13/153303.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>usaco_calflac多行文件中找出最长回文串</title><link>http://www.cppblog.com/snowshine09/archive/2011/08/11/153038.html</link><dc:creator>拥梦的小鱼</dc:creator><author>拥梦的小鱼</author><pubDate>Thu, 11 Aug 2011 03:23:00 GMT</pubDate><guid>http://www.cppblog.com/snowshine09/archive/2011/08/11/153038.html</guid><wfw:comment>http://www.cppblog.com/snowshine09/comments/153038.html</wfw:comment><comments>http://www.cppblog.com/snowshine09/archive/2011/08/11/153038.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/snowshine09/comments/commentRss/153038.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/snowshine09/services/trackbacks/153038.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 回文串不考虑除字母以外的字符，并且不区分大小写。strupr()usaco不让用，可能toupper可以。strcat(s1,s2)中s1必须为数组才可以不报错。while(fgets(line,100,fin)!=NULL)读入的一行包括结尾的换行符。注意处理大小写情况。第一种方法在usaco的test8中超时了。第二种，网上查的DP方法，讨论奇偶性，高效简单快捷。（1）暴搜。每读入一行，从此行...&nbsp;&nbsp;<a href='http://www.cppblog.com/snowshine09/archive/2011/08/11/153038.html'>阅读全文</a><img src ="http://www.cppblog.com/snowshine09/aggbug/153038.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/snowshine09/" target="_blank">拥梦的小鱼</a> 2011-08-11 11:23 <a href="http://www.cppblog.com/snowshine09/archive/2011/08/11/153038.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>