??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲电影在线看,性欧美精品高清,亚洲国产电影http://www.shnenglu.com/qhpeklh5959/category/20197.html柳Q因风?/description>zh-cnSat, 13 Apr 2013 07:14:39 GMTSat, 13 Apr 2013 07:14:39 GMT60HDU1025 Constructing Roads In JGShining's Kingdomhttp://www.shnenglu.com/qhpeklh5959/articles/199286.html雨?/dc:creator>雨?/author>Tue, 09 Apr 2013 12:18:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/199286.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/199286.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/199286.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/199286.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/199286.html题目链接Q?a style="color: #6a3906; text-decoration: none;">http://acm.hdu.edu.cn/showproblem.php?pid=1025

题意大概是l你一大堆的城市,左边的数表示q个城市~Z么物资,双的数表示那个物资从哪个城市往里运Q两个城市之间需要链接道路,问不交叉的情况下Q最多能q多条。这道题原本应该是一个最长公共子序列Q但是无奈他l的数据范围太大QLCS的做法明显不满Q所以首先我们可以把双的数映射到左Ҏ(gu)Q这样就转化成求最长不下降子序列的问题Q对于最长不下降子序列,有一UDP+二分的求法,可以在nlogn的情况下完美解决?/p>

思\大概是dp数组记录的是到当前长度的最靠前的元素,每遇C个新元素Q在dp数组中二分查扑ֈ于它的最大元素的位置Q在那里更新到它的最长不下降子序列,q个法牛逼就牛逼在二分那一步了Q否则也不会(x)做到nlogn的时间复杂度

view code



]]>
HDU1003 Max Sum && HDU1024 Max Sum Plus Plushttp://www.shnenglu.com/qhpeklh5959/articles/199285.html雨?/dc:creator>雨?/author>Tue, 09 Apr 2013 12:17:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/199285.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/199285.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/199285.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/199285.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/199285.html题目链接Q?a style="color: #6a3906; text-decoration: none;">http://acm.hdu.edu.cn/showproblem.php?pid=1003

1003是喜M见的最大连l子串和Q经典的动态规划题目,l典归经典,我确实是刚刚?#8230;…在这道题中,我们需要保证的是在计算q程之中Q计的和是一直增加的Q如果碰C让和减少的元素,直接把和更新?Qƈ且更C(f)旉指针Q每扑ֈ一个更优的解,把真正的首指针和指针更斎ͼ整个q程中一直保证的是和是递增的。注意我说的是非全负的情c(din)?br />

view code
题目链接Q?a style="color: #6a3906; text-decoration: none;">http://acm.hdu.edu.cn/showproblem.php?pid=1024

 

q道题厉害了Q要求在n个数里面求m个最大子D和Q要求最l的和最大,其实是计算mơ,因ؓ(f)q此不用记录区间的首օ素,所以其实比上一道题好写一些?br />

view code



]]>
POJ3280 Cheapest Palindromehttp://www.shnenglu.com/qhpeklh5959/articles/199282.html雨?/dc:creator>雨?/author>Tue, 09 Apr 2013 12:15:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/199282.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/199282.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/199282.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/199282.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/199282.html题目链接Q?a style="color: #6a3906; text-decoration: none;">http://poj.org/problem?id=3280

题目大意是l你一个字W串Q和字符串中每一个字母删除或者添加所需要付出的代h(hun)Q问把它变成一个回文字串所需要的最的代h(hun)?/p>

首先明确一个问题,如果我们在字W串中某一个位|删除一个字W,那么一定能扑ֈ一个等L(fng)d的方法,所以可以把删除和添加统一CP然后q道题的状态就单了?/p>

dp[i][j]表示的是区间[i, j]内Ş成回文串所需要的最的代h(hun)Q这h们就可以׃个单位字W向外扩展,状态{ULE就应该是dp[j][i] = min(dp[j + 1][i] + cost[s[j] - 'a'], dp[j][i - 1] + cost[s[i] - 'a'])Q另外如果区间的首尾字符都是一L(fng)话,那么首尾字符全都删去q是一个回文串Q这样一来再把两个代价做一个比较就可以了吧?br />

当然Q其实最初的x是扩展出来四个状态,是首删除,首添加,ֈ除,添加,由此扩展开来求一个最|不过看了一下解题报告,再加上和学长们YY一?x)儿Q发C可以l一的问题,想出来了?br />

view code



]]>
TYVJP1114http://www.shnenglu.com/qhpeklh5959/articles/195747.html雨?/dc:creator>雨?/author>Tue, 27 Nov 2012 14:39:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/195747.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/195747.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/195747.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195747.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/195747.htmldp[i][j]表示使用前i个水晶块的时候,两塔的误差为j时两座塔共有的最高高度,对于Wi个木块,有三U情况,W一U不放,W二U放在其中挨塔上Q此时更新误差g?qing)共有的最高高度|W三U情冉|在高塔上Q此时仅仅更新误差倹{?br />
view code


]]>
POJ3628又是一?1背包http://www.shnenglu.com/qhpeklh5959/articles/195625.html雨?/dc:creator>雨?/author>Sat, 24 Nov 2012 08:10:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/195625.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/195625.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/195625.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195625.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/195625.html
vidw code


]]>
HDU1864http://www.shnenglu.com/qhpeklh5959/articles/195624.html雨?/dc:creator>雨?/author>Sat, 24 Nov 2012 07:24:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/195624.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/195624.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/195624.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195624.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/195624.htmlq好样例吧所有的陷阱都给了,否则不知道要WA多少ơ,可恨的是我CE了一ơ,TMD复制_脓(chung)的时候搞错了Q这要是正式比赛Q那个罚时啊……
view code


]]>
POJ2063解题报告http://www.shnenglu.com/qhpeklh5959/articles/195575.html雨?/dc:creator>雨?/author>Thu, 22 Nov 2012 13:35:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/195575.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/195575.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/195575.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195575.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/195575.html
view code


]]>
POJ1014解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/195243.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Thu, 15 Nov 2012 13:32:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/195243.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/195243.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/195243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195243.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/195243.html</trackback:ping><description><![CDATA[q道题我实傻g……<br />多重背包+二进制拆分优化,如果dp[sum/2]=sum/2p明能够均分,否则不能均分?br />我就是每惛_一个事?#8230;…如果sum是奇数直接果断的不行Q还有一个错误,是把continue写成了return 0……傻g……<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_213155" onclick="this.style.display='none'; Code_Closed_Text_213155.style.display='none'; Code_Open_Image_213155.style.display='inline'; Code_Open_Text_213155.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_213155" style="display: none" onclick="this.style.display='none'; Code_Open_Text_213155.style.display='none'; Code_Closed_Image_213155.style.display='inline'; Code_Closed_Text_213155.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_213155" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">view code</span><span id="Code_Open_Text_213155" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> max(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> b)<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (a </span><span style="color: #000000; ">></span><span style="color: #000000; "> b) </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> a;<br />    </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> b;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> num[</span><span style="color: #000000; ">10</span><span style="color: #000000; ">], dp[</span><span style="color: #000000; ">120000</span><span style="color: #000000; ">], t, tot, i, j, sum, w[</span><span style="color: #000000; ">400000</span><span style="color: #000000; ">], n </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">bool</span><span style="color: #000000; "> ju </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (n)<br />    {<br />        sum </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; tot </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; ju </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />        memset(w, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(w));<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> </span><span style="color: #000000; ">6</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        {<br />            cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> num[i];<br />            sum </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> num[i] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> i;<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">) ju </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        }<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (sum </span><span style="color: #000000; ">%</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; "> </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />        {<br />            cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Collection #</span><span style="color: #000000; ">"</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; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Can't be divided.</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />            </span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />        }<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (ju </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: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> </span><span style="color: #000000; ">6</span><span style="color: #000000; ">; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        {<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />            {<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                w[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i;<br />                num[i]</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />            }<br />            t </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">>=</span><span style="color: #000000; "> t)<br />            {<br />                num[i] </span><span style="color: #000000; ">-=</span><span style="color: #000000; "> t;<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                w[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> i </span><span style="color: #000000; ">*</span><span style="color: #000000; "> t;<br />                t </span><span style="color: #000000; ">*=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            }<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />            {<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                w[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> num[i] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> i;<br />            }<br />        }<br />        memset(dp, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(dp));<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> tot; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />            </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> sum </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">; j </span><span style="color: #000000; ">>=</span><span style="color: #000000; "> w[i]; j</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />            {<br />                dp[j] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> max(dp[j], dp[j </span><span style="color: #000000; ">-</span><span style="color: #000000; "> w[i]] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> w[i]);<br />            }<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (dp[sum </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">] </span><span style="color: #000000; ">==</span><span style="color: #000000; "> (sum </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">))<br />            cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Collection #</span><span style="color: #000000; ">"</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; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Can be divided.</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />        </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Collection #</span><span style="color: #000000; ">"</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; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">:</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> </span><span style="color: #000000; ">"</span><span style="color: #000000; ">Can't be divided.</span><span style="color: #000000; ">"</span><span style="color: #000000; "> </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></span></div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/195243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-15 21:32 <a href="http://www.shnenglu.com/qhpeklh5959/articles/195243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ1276解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/195232.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Thu, 15 Nov 2012 06:30:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/195232.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/195232.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/195232.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195232.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/195232.html</trackback:ping><description><![CDATA[<span style="font-size: 10pt;"> q道题的题目描述好؜q_(d)但是L白了p看出来,实际上这道题是一个多重背包,但是Q就那么写多重背包必然会(x)时Q所以就有了一个优化,多重背包二进制拆分优化?/span><br /><span style="font-size: 10pt;">《背包九(ji)讌Ӏ中介绍q这U优化,但是昨天看了好久Q没明白原理Q所以求?YYQȝ是了解了。?/span><br /><span style="font-size: 10pt;">所谓二q制拆分优化Q就是把n[i]个物品给拆分Q每个物品占的空间是c[i]Qc[i]*2Qc[i]*2</span><sup style="font-size: 10pt;">2</sup><span style="font-size: 10pt;">Qc[i]*2</span><sup style="font-size: 10pt;">3</sup><span style="font-size: 10pt;">...c[i]*2</span><sup style="font-size: 10pt;">k-1</sup><span style="font-size: 10pt;">Qc[i]*(n[i]-2</span><sup style="font-size: 10pt;">k</sup><span style="font-size: 10pt;">+1)Q实际上加和以后q是Qc[i]*n[i]Q,物品的h(hun)g是这么拆分,Z么这么拆分呢Q思\来自于二q制数表C法Q比如说5</span><sub style="font-size: 10pt;">10</sub><span style="font-size: 10pt;">=101</span><sub style="font-size: 10pt;">2</sub><span style="font-size: 10pt;">Q也是说如果取5件i物品Q相当于取第一件和W三Ӟ2</span><sup style="font-size: 10pt;">0</sup><span style="font-size: 10pt;">+2</span><sup style="font-size: 10pt;">2</sup><span style="font-size: 10pt;">Q所有的数都可以q么表示</span><span style="font-size: 10pt;">出来Q?/span><span style="font-size: 10pt;">所以可以说q么拆分了以后和原来是等L(fng)Q所以这么拆分当然就是合理的?/span><br />附AC代码Q?br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_143014" onclick="this.style.display='none'; Code_Closed_Text_143014.style.display='none'; Code_Open_Image_143014.style.display='inline'; Code_Open_Text_143014.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_143014" style="display: none" onclick="this.style.display='none'; Code_Open_Text_143014.style.display='none'; Code_Closed_Image_143014.style.display='inline'; Code_Closed_Text_143014.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_143014" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">view code</span><span id="Code_Open_Text_143014" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> max(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> a, </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> b)<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (a </span><span style="color: #000000; ">></span><span style="color: #000000; "> b) </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> a;<br />    </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> b;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> cash, n, cc, c[</span><span style="color: #000000; ">100000</span><span style="color: #000000; ">], num[</span><span style="color: #000000; ">15</span><span style="color: #000000; ">], t, i, j, tot, dp[</span><span style="color: #000000; ">100005</span><span style="color: #000000; ">];<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> ((scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">cash, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">n)) </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> EOF)<br />    {<br />        tot </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />        memset(c, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(c));<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        {<br />            cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> num[i] </span><span style="color: #000000; ">>></span><span style="color: #000000; "> cc;<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />            {<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                c[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> cc;<br />                num[i]</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />            }<br />            t </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">>=</span><span style="color: #000000; "> t)<br />            {<br />                num[i] </span><span style="color: #000000; ">-=</span><span style="color: #000000; "> t;<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                c[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> cc </span><span style="color: #000000; ">*</span><span style="color: #000000; "> t;<br />                t </span><span style="color: #000000; ">*=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />            }<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (num[i] </span><span style="color: #000000; ">></span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />            {<br />                tot</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />                c[tot] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> num[i] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> cc;<br />            }<br />        }<br />        memset(dp, </span><span style="color: #000000; ">0</span><span style="color: #000000; ">, </span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">(dp));<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> tot; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />            </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> cash; j </span><span style="color: #000000; ">>=</span><span style="color: #000000; "> c[i]; j</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />            {<br />                dp[j] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> max(dp[j], dp[j </span><span style="color: #000000; ">-</span><span style="color: #000000; "> c[i]] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> c[i]);<br />            }<br />        cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> dp[cash] </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></span></div>特别鸣谢Q飞哥figo<br style="font-size: 10pt;" /><span style="font-size: 10pt;"> </span><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/195232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-15 14:30 <a href="http://www.shnenglu.com/qhpeklh5959/articles/195232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最长公共子序列问题http://www.shnenglu.com/qhpeklh5959/articles/195200.html雨?/dc:creator>雨?/author>Wed, 14 Nov 2012 10:16:00 GMThttp://www.shnenglu.com/qhpeklh5959/articles/195200.htmlhttp://www.shnenglu.com/qhpeklh5959/comments/195200.htmlhttp://www.shnenglu.com/qhpeklh5959/articles/195200.html#Feedback0http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195200.htmlhttp://www.shnenglu.com/qhpeklh5959/services/trackbacks/195200.htmll定两个序列Q求两个序列的最长公共子序列的长度(暂时先列出来长度好了……Q?br />如此l典的DPQ我竟然现在才弄明白Q真心弱爆了Q好吧,废话不说了,开始吧?br />对于两个序列Qdp[i][j]表示当第一个序列取前i个元素,W二个序列取前j个元素的时候,最长公共子序列的长度,那么对于此状态,有如下几U推导方式,假设W一个序列是XQx1,x2...xiQ,W二个序列是YQy1,y2...yjQ,如果xi=yjQ则dp[i][j]=dp[i-1][j-1]+1Q否则,q于dp[i-1][j]或者dp[i][j-1]。理由如下,假设X和Y的最长公共子序列为ZQz1,z2,...zkQ,如果xi=yjQ必然有xi=yj=zkQ如果xi≠yjQ而且xi≠zkQ则Z必然是Xi-1和Y的一个最长公共子序列Q因为xi存在与否Ҏ(gu)不媄响最l的l果Q而zk必然存在于X的前i-1个元素中Q否则不成立Q同理可q用于Y序列Q所以可以得到推导关pR?br />刚刚把代码YY出来Q不知道对不对,希望某一个大牛出来指正一?#8230;…
特别鸣谢Q磊哥ZLGG
view code


]]>
POJ1837解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/195173.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Tue, 13 Nov 2012 22:32:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/195173.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/195173.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/195173.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/195173.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/195173.html</trackback:ping><description><![CDATA[<dl><dt>到现在ؓ(f)止,q道题我q是没有完全理解Q但是还是要把这个解题报告放出来Q说不定写着写着我就明白了,说不定看着看着Q我也就能明白了?/dt><dt>题意是给一个左叛_?5的杆子,在杆子的指定位置上挂C个挂钩,lG个砝码,不同重量Q挂在杆子两侧,问何时达到^衡?/dt><dt>q道题的状态我愣是没确定了Q被q道题吓C。^衡度Q好吧,从来没做q类似的DP题?/dt><p>q道题的最l结果还是求助得来的Q天Q又是求?#8230;…只求做一道会(x)一道吧?/p><p>状态dp[i][j]表示当用了前i个物品,q度ؓ(f)j的挂法的数量Q题里面要求的应该是求所有g个物品挂上去以后Q^衡度?的挂法吧Q好吧,暂时先不它Q极端情况就是所有的物品都挂在最q端Q那极端情况应该是25*20*15=7500Q按照题意,应该是左边7500Q右?500Q范围应该是[-7500..7500]Q移植到C语言里面是[1..15000]Q所求的是dp[g][7500]?/p><p>如果Wi个物品挂在某一个挂钩上Q一定在挂上前i-1个物品的所产生的某q度的基础上生了一个新的^衡度Q不同的挂钩q度不同,Wi个物品挂在每一个挂钩上面所产生的新q度的挂法都要加上前i-1个物品所产生的旧q度的挂法Q方E有点儿ȝQ先不列了,攑֜下面的代码中好了……</p><p>特别鸣谢Q翔哥zzxyyx_1<br /></p></dl><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_063152" onclick="this.style.display='none'; Code_Closed_Text_063152.style.display='none'; Code_Open_Image_063152.style.display='inline'; Code_Open_Text_063152.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_063152" style="display: none" onclick="this.style.display='none'; Code_Open_Text_063152.style.display='none'; Code_Closed_Image_063152.style.display='inline'; Code_Closed_Text_063152.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_063152" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">view code</span><span id="Code_Open_Text_063152" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008080; "> 1</span> <span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 2</span> <span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #008080; "> 3</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #008080; "> 4</span> <span style="color: #000000; "></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br /></span><span style="color: #008080; "> 5</span> <span style="color: #000000; ">{<br /></span><span style="color: #008080; "> 6</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> c, g, w[</span><span style="color: #000000; ">21</span><span style="color: #000000; ">], z[</span><span style="color: #000000; ">21</span><span style="color: #000000; ">], i, j, dp[</span><span style="color: #000000; ">21</span><span style="color: #000000; ">][</span><span style="color: #000000; ">15005</span><span style="color: #000000; ">], k;<br /></span><span style="color: #008080; "> 7</span> <span style="color: #000000; ">    cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> c </span><span style="color: #000000; ">>></span><span style="color: #000000; "> g;<br /></span><span style="color: #008080; "> 8</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> c; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> z[i];<br /></span><span style="color: #008080; "> 9</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> g; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> w[i];<br /></span><span style="color: #008080; ">10</span> <span style="color: #000000; ">    dp[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">][</span><span style="color: #000000; ">7500</span><span style="color: #000000; ">] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">11</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> g; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">12</span> <span style="color: #000000; ">    {<br /></span><span style="color: #008080; ">13</span> <span style="color: #000000; ">        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">-</span><span style="color: #000000; ">7500</span><span style="color: #000000; ">; j </span><span style="color: #000000; "><=</span><span style="color: #000000; "> </span><span style="color: #000000; ">7500</span><span style="color: #000000; ">; j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">14</span> <span style="color: #000000; ">        {<br /></span><span style="color: #008080; ">15</span> <span style="color: #000000; ">            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">(dp[i </span><span style="color: #000000; ">-</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; "> </span><span style="color: #000000; ">7500</span><span style="color: #000000; ">] </span><span style="color: #000000; ">!=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">16</span> <span style="color: #000000; ">            </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (k </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">; k </span><span style="color: #000000; "><=</span><span style="color: #000000; "> c; k</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br /></span><span style="color: #008080; ">17</span> <span style="color: #000000; ">            {<br /></span><span style="color: #008080; ">18</span> <span style="color: #000000; ">                dp[i][j </span><span style="color: #000000; ">+</span><span style="color: #000000; "> z[k] </span><span style="color: #000000; ">*</span><span style="color: #000000; "> w[i] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">7500</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+=</span><span style="color: #000000; "> dp[i </span><span style="color: #000000; ">-</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; "> </span><span style="color: #000000; ">7500</span><span style="color: #000000; ">];<br /></span><span style="color: #008080; ">19</span> <span style="color: #000000; ">            }<br /></span><span style="color: #008080; ">20</span> <span style="color: #000000; ">        }<br /></span><span style="color: #008080; ">21</span> <span style="color: #000000; ">    }<br /></span><span style="color: #008080; ">22</span> <span style="color: #000000; ">    cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> dp[g][</span><span style="color: #000000; ">7500</span><span style="color: #000000; ">] </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br /></span><span style="color: #008080; ">23</span> <span style="color: #000000; ">    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /></span><span style="color: #008080; ">24</span> <span style="color: #000000; ">}<br /></span><span style="color: #008080; ">25</span> <span style="color: #000000; "></span></span></div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/195173.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-14 06:32 <a href="http://www.shnenglu.com/qhpeklh5959/articles/195173.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU1421解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/194989.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Fri, 09 Nov 2012 12:25:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/194989.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/194989.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/194989.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/194989.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/194989.html</trackback:ping><description><![CDATA[<div><div> <p>q道题我真心不会(x)?#8230;…</p><p>题意的话按题查询好了Q我p我求助加上YY的解题好?#8230;…</p><p>当然Q看了那个纠l的题意我果断的p虐到了,额啊Q神题啊……l跪……</p><p>首先Q既然疲力_是做差,那排个序好了Q有序状态下盔R两个做差是尽量小的?/p><p>?态是dp[i][j]表示在前i个物品中扑ևj对得疲力_最,有一个决{就是第i个物品用q是不用Q如果不用的话,前i个物品的疲劳度一定是{于?i-1个物品找出j对的疲劳度,如果用了Q那用的一定是Wi个和Wi-1个,那就应该{于前i-2个物品中扑ևj-1对的最疲力_加上q两个物品获得的 疲劳度。状态{ULE:(x)dp[i][i]=min(dp[i-1][j],dp[i-2][j-1]+(w[i]-w[i-1])^2)。然后就写代码好 ?#8230;…</p> </div></div>特别鸣谢Q孟哥silver__bullet<br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><img id="Code_Closed_Image_202437" onclick="this.style.display='none'; Code_Closed_Text_202437.style.display='none'; Code_Open_Image_202437.style.display='inline'; Code_Open_Text_202437.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ContractedBlock.gif" align="top" height="16" width="11"><img id="Code_Open_Image_202437" style="display: none" onclick="this.style.display='none'; Code_Open_Text_202437.style.display='none'; Code_Closed_Image_202437.style.display='inline'; Code_Closed_Text_202437.style.display='inline';" src="http://www.shnenglu.com/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" height="16" width="11"><span id="Code_Closed_Text_202437" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">view code</span><span id="Code_Open_Text_202437" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">#define</span><span style="color: #000000; "> min(a,b) ((a) < (b) ? (a) : (b))</span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> n, k, i, j, w[</span><span style="color: #000000; ">2005</span><span style="color: #000000; ">], dp[</span><span style="color: #000000; ">2005</span><span style="color: #000000; ">][</span><span style="color: #000000; ">1005</span><span style="color: #000000; ">];<br />    cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> n </span><span style="color: #000000; ">>></span><span style="color: #000000; "> k;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%ld</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">&</span><span style="color: #000000; ">w[i]);<br />    sort(w </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">, w </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; ">+</span><span style="color: #000000; "> n);<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; j </span><span style="color: #000000; "><=</span><span style="color: #000000; "> k; j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) dp[i][j] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">210000000</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) dp[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</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; "> (i </span><span style="color: #000000; ">/</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">); j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />            dp[i][j] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> min(dp[i </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">][j], dp[i </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">][j </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; ">+</span><span style="color: #000000; "> (w[i] </span><span style="color: #000000; ">-</span><span style="color: #000000; "> w[i </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; ">*</span><span style="color: #000000; "> (w[i] </span><span style="color: #000000; ">-</span><span style="color: #000000; "> w[i </span><span style="color: #000000; ">-</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">]));<br />    cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> dp[n][k] </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></span></div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/194989.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-09 20:25 <a href="http://www.shnenglu.com/qhpeklh5959/articles/194989.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>课业ȝ…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/194950.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Thu, 08 Nov 2012 17:16:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/194950.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/194950.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/194950.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/194950.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/194950.html</trackback:ping><description><![CDATA[<div><div><div><p style="text-indent:0.74cm;margin-bottom:0.0cm">?sh)脑正在升pȝQ我上来E稍溜达溜达?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">今天扄哥给我讲了讲动态规划,真心受益Qؓ(f)了防止以后忘了,ȝ一下先?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">哥是从L一个有向无环图的最短\讲v的,有向无环囄讲法参看《算法导论》,在这里我׃重复说一遍了Q因为我实在是没有办法把囄出来?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">实际上磊哥解决了我的一个疑惑,利用他的l验?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">?动态规划题Ҏ(gu)来说最为闹心的是L状态,L最优子l构Q貌D两个一有困隑֊态规划的题根本就没法做了。磊哥告诉我的做法就是枚丄态,所谓枚丄 态就是把q道题所有可能当状态的东西都列出来Q然后一个个去进行排除。排除的q程是这L(fng)Q首先要q行定义Q也是说要明确q个状态到底是什么,有什么用 处,然后再用q个状态画有向无环图,如果L向无环图的过E中推理出由q个状态,后面的根本无法实现或者说出现了矛盾,那么q个状态就是错的,最l一定能 够枚丑և来一个正的状态?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm"> <span style="font-family:DejaVu Serif , serif"><span style="font-size:medium">/*</span></span>一说到枚DQ就要考虑一下时间复杂度Q但是我认ؓ(f)q个可以忽略不计Q就是对于来说Q因Z道题之中貌似能找出来的状态应该不能超q手指能查找的范围。好吧,以上是仅供娱乐的题外话?span style="font-family:DejaVu Serif , serif"><span style="font-size:medium">*/</span></span></p><p style="text-indent:0.74cm;margin-bottom:0.0cm">?丑և来一个正的状态之后,那么pq入下一个纠l的状态,那就是寻找最优子l构Q磊哥的做法我认为非帔R明,那就是我前文所提到的有向无环图Q以状态当 l点Q{化关pd作边权,L向无环图Q然后参照着有向无环囄那种方式来寻找最优子l构Q但是纠l的是怎么做边权,q个实闹心Q这块硬骨头只能是一 点点d了?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">最优子l构推出来以后,下一步就是推状态{ULE,q个没有别的办法Q就是用最优子l构中所体现的{化关pL推状态{ULE了……</p><p style="text-indent:0.74cm;margin-bottom:0.0cm">以上q些是磊哥给我讲的东西的ȝ版,目测回忆h应该是全的,然后按照哥的指令(也是执行飞哥说的q个月开始推动态规划的计划Q,应该l箋L动态规划入门,哥的意思是做一堆水题练l思想Q那么就做吧……然后应该百度一?span style="font-family:DejaVu Serif , serif"><span style="font-size:medium">DP</span></span>水题Q开始刷Q刷一D|间水题吧Q怎么说呢Q练l思想Q先入了动态规划的门,高动态规划有我啃的呢Q?/p><p style="text-indent:0.74cm;margin-bottom:0.0cm">飞哥l我定的计划应该是严格执行的Q然后我自己定的那个比较山寨的学?fn)计划也应该执行下去Q毕竟数据结构也是个伤,本学期好歹要把数据结构基拿下了,动态规划入门了……</p></div></div> </div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/194950.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-09 01:16 <a href="http://www.shnenglu.com/qhpeklh5959/articles/194950.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ1069题解…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/194949.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Thu, 08 Nov 2012 17:14:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/194949.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/194949.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/194949.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/194949.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/194949.html</trackback:ping><description><![CDATA[<div><div><p>我承认,q道题我做了很久Q大概是三天?#8230;…所以应该把q道题答案放出来……</p><p>啃动态规划嘛Q那肯定是动态规划啦Q?/p><p>题目大意是有NU木块,每种无限个,有长宽高QQ意两个当底,一个当高,把这些木块摞hQ上面的木块长和宽都必须比下面的,问最高能摞多高?</p><p>?吧,q道题刚开始看到的时候我果断看成了一个无限空间的背包问题Q但是马上我发CbugQ如果真的是当背包做Q第二重循环怎么写啊……然后开始枚丄 二个状?#8230;…f[i]表示当第i个木块ؓ(f)时的最高高度,每一个木块都得比它下面的木块,仔仔l细xp发现一个木块只能用三个Q那么好吧,存储的时 候一个当成三个存好了……</p><p>遇到q种情况我喜Ƣ用l构体,因ؓ(f)q样一个变量就可以存入一个木块的所有的参数Q果断就是组合数Q长宽高那么存 p了,而且长永q比宽长Qؓ(f)了保险,以所有木块的长ؓ(f)主进行排序。然后开始做Q第i个木块ؓ(f)Ӟ然后开始扫它底下的木块Q因Z先排q序了,在i下面?木块只能是i之前的而且宽比i的木块Q实际上Q愿意扫全场也行Q?/p><p>最优子l构是当Wi个ؓ(f)ؓ(f)最高的时候,i的下面一定存在一点kQ当W?k个木块在最上的时候,使得高度最高,然后以k为最底,当第i个木块在最上的时候,使得高度最高,q样一来整体高度最高。说实话Q我惌当摞了前i?木块Q得高度最高的子结构,l果我就发现了每个木块都有三U摆放方式,然后是一个大bug——Ҏ(gu)无法实现好不?#8230;…</p><p>最优子l构扑ֈ了,然后是写方E了?/p><p>方程那段的代码:(x)</p><p>if (f[i] < f[j] + a[i].g) f[i] = f[j] + a[i].g;</p><p>a[i].g是第i个的高,j表示的是i下面的那个,每一步都要有一个初始化Q就是f[i] = a[i].g?/p><p>好了……写完了?/p><p>PSQ其实这个灵感来自于哥的一个指?#8230;…原版是f[i, s]表示当第i个以s方式为顶的时候,最高的高度Q然后我觉得木块的变化有炚w深,干脆把一个木块当成三个木块了。。?/p><p>特别鸣谢Q磊哥ZLGG<br /></p></div></div><br /><div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000;"></span><div>#include <iostream><br />#include <cstdio><br />#include <cstring><br />#include <cmath><br />#include <algorithm><br />using namespace std;<br />struct data<br />{<br />    int x, y, z;<br />}a[100];<br />int n, i, j, tot, x, y, z, dp[100];<br />int max(int a, int b)<br />{<br />    if (a > b) return a;<br />    else return b;<br />}<br />int min(int a, int b)<br />{<br />    if (a < b) return a;<br />    else return b;<br />}<br />int cmp(data a, data b)<br />{<br />    return a.x > b.x;<br />}<br />void add(int x, int y, int z)<br />{<br />    tot++;<br />    a[tot].x = max(x, y);<br />    a[tot].y = min(x, y);<br />    a[tot].z = z;<br />    tot++;<br />    a[tot].x = max(x, z);<br />    a[tot].y = min(x, z);<br />    a[tot].z = y;<br />    tot++;<br />    a[tot].x = max(y, z);<br />    a[tot].y = min(y, z);<br />    a[tot].z = x;<br />}<br />int main()<br />{<br />    int t = 1;<br />    while (cin >> n && n != 0)<br />    {<br />        tot = 0;<br />        memset(dp, 0, sizeof(dp));<br />        for (i = 1; i <= n; i++)<br />        {<br />            cin >> x >> y >> z;<br />            add(x, y, z);<br />        }<br />        sort(a + 1, a + tot + 1, cmp);<br />        for (i = 1; i <= tot; i++) dp[i] = a[i].z;<br />        for (i = 2; i <= tot; i++)<br />          for (j = 1; j <= i; j++)<br />          {<br />              if (a[j].x > a[i].x && a[j].y > a[i].y)<br />              {<br />                  dp[i] = max(dp[i], dp[j] + a[i].z);<br />              }<br />          }<br />        int max = 0;<br />        for (i = 1; i <= tot; i++)<br />          if (dp[i] > max) max = dp[i];<br />        cout << "Case " << t++ << ": maximum height = " << max << endl;<br />    }<br />    return 0;<br />}</div><span style="color: #000000; "></span></div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/194949.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-09 01:14 <a href="http://www.shnenglu.com/qhpeklh5959/articles/194949.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ3616解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/194948.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Thu, 08 Nov 2012 17:11:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/194948.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/194948.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/194948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/194948.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/194948.html</trackback:ping><description><![CDATA[<div> <p>?#8230;…q道题貌g不怎么强大Q但是着实让我纠l,所以我又开始求助了Q然后求助成功,解题Q然后脓(chung)上来Q以免以后忘?#8230;…</p><p>题目大意是这L(fng)Q给一D|间NQ给M个时间段Q给开始时间和l束旉Q每个时间段有一个效率,每次用完某一旉D늚效率必须休息R时Q求最高的效率?/p><p>好吧Q存储结构没有异议,一个量Q三个参敎ͼ果断的结构体存储啊,方便得体Q多好啊……</p><p>?开始我果断的打把它当成一?1背包来做Q但是果断的错了Q被我自己否决了Q还好没?#8230;…Q我的想法是直接把每一D늚l束旉减去开始时_(d)然后成ؓ(f)一个消耗时间段Q然后抽?#8230;…N代表背包d量,M代表物品个数Q消耗时间段代表着物品占用的空_(d)效率是物品价|一个华丽丽?1背包解决……当然q?个错了,原因是既然给了每个时间段的开始时间和l束旉Q还有休息时_(d)那如果重叠了怎么?#8230;…然后果断的否决了?/p><p>实际上正的状态是?选用Wi个时间段为结时候,所获得的最大效率,当然得把旉D늚先后先排个序Q按照开始时L序,q样比较有爱……q样的话当处理第i个时间段也就?f[i]的时候,之前需要计的都在WiD늚前面。当处理到第iD늚时候,前面必然有一个jQ得以j为结时候,所得效率最大,从而保证到WjD늚最 大效率加上第iD늚效率最大,j可以是i前面的Q意一D|_(d)反正保证了最大就行。初始化的时候要有这么一句:(x)f[i]=in[i].efQ这样就是防?有前面所有段全都不用q种情况。方E是q样的:(x)f[i]=max(f[j]+in[i].efQf[i])Qin[i].ef是第iD|间中的效率?/p><p>但是一定要注意一点,选用的时间区间除了端点以外是不能重合的,q得记得把休息时间加?#8230;…</p><p>特别鸣谢Q翔哥zzxyyx_1<br /></p><div style="background-color: #eeeeee; font-size: 13px; border: 1px solid #cccccc; padding: 4px 5px 4px 4px; width: 98%; word-break: break-all;"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">></span><span style="color: #000000; "><br />#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; "> std;<br /></span><span style="color: #0000FF; ">struct</span><span style="color: #000000; "> interval<br />{<br />    </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> st, en, ef;<br />}</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[</span><span style="color: #000000; ">1001</span><span style="color: #000000; ">];<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> max(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> a, </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> b)<br />{<br />    </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (a </span><span style="color: #000000; ">></span><span style="color: #000000; "> b) </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> a;<br />    </span><span style="color: #0000FF; ">else</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> b;<br />}<br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> cmp(interval a, interval b)<br />{<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> a.st </span><span style="color: #000000; "><</span><span style="color: #000000; "> b.st;<br />}<br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">long</span><span style="color: #000000; "> n, m, r, i, j, f[</span><span style="color: #000000; ">1001</span><span style="color: #000000; ">], maxi;<br />    cin </span><span style="color: #000000; ">>></span><span style="color: #000000; "> n </span><span style="color: #000000; ">>></span><span style="color: #000000; "> m </span><span style="color: #000000; ">>></span><span style="color: #000000; "> r;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> m; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />    {<br />        scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%ld%ld%ld</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, </span><span style="color: #000000; ">&</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].st, </span><span style="color: #000000; ">&</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].en, </span><span style="color: #000000; ">&</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].ef);<br />    }<br />    sort(</span><span style="color: #0000FF; ">in</span><span style="color: #000000; "> </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: #0000FF; ">in</span><span style="color: #000000; "> </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; ">+</span><span style="color: #000000; "> m, cmp);<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> m; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">) f[i] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].ef;<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> m; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (j </span><span style="color: #000000; ">=</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; "> i; j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        {<br />            </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (</span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[j].en </span><span style="color: #000000; ">+</span><span style="color: #000000; "> r </span><span style="color: #000000; "><=</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].st)<br />            {<br />                f[i] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> max(f[j] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> </span><span style="color: #0000FF; ">in</span><span style="color: #000000; ">[i].ef, f[i]);<br />            }<br />        }<br />    </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </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; "><=</span><span style="color: #000000; "> m; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        </span><span style="color: #0000FF; ">if</span><span style="color: #000000; "> (f[i] </span><span style="color: #000000; ">></span><span style="color: #000000; "> maxi) maxi </span><span style="color: #000000; ">=</span><span style="color: #000000; "> f[i];<br />    cout </span><span style="color: #000000; "><<</span><span style="color: #000000; "> maxi </span><span style="color: #000000; "><<</span><span style="color: #000000; "> endl;<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000;">;<br />}</span></div> </div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/194948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-09 01:11 <a href="http://www.shnenglu.com/qhpeklh5959/articles/194948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ1953解题报告…?/title><link>http://www.shnenglu.com/qhpeklh5959/articles/194202.html</link><dc:creator>雨?/dc:creator><author>雨?/author><pubDate>Sat, 03 Nov 2012 08:50:00 GMT</pubDate><guid>http://www.shnenglu.com/qhpeklh5959/articles/194202.html</guid><wfw:comment>http://www.shnenglu.com/qhpeklh5959/comments/194202.html</wfw:comment><comments>http://www.shnenglu.com/qhpeklh5959/articles/194202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/qhpeklh5959/comments/commentRss/194202.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/qhpeklh5959/services/trackbacks/194202.html</trackback:ping><description><![CDATA[<div><div> <div style="background-color:#eeeeee;font-size:13px;border:1px solid #CCCCCC;padding-right: 5px;padding-bottom: 4px;padding-left: 4px;padding-top: 4px;width: 98%;word-break:break-all"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000; ">#include </span><span style="color: #000000; "><</span><span style="color: #000000; ">stdio.h</span><span style="color: #000000; ">></span><span style="color: #000000; "><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> main()<br />{<br />    </span><span style="color: #0000FF; ">int</span><span style="color: #000000; "> m, n, f[</span><span style="color: #000000; ">46</span><span style="color: #000000; ">][</span><span style="color: #000000; ">2</span><span style="color: #000000; ">], i, t </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />    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; ">&</span><span style="color: #000000; ">m);<br />    </span><span style="color: #0000FF; ">while</span><span style="color: #000000; "> (t </span><span style="color: #000000; "><=</span><span style="color: #000000; "> m)<br />    {<br />        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; ">&</span><span style="color: #000000; ">n);<br />        f[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />        f[</span><span style="color: #000000; ">1</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; "> </span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />        </span><span style="color: #0000FF; ">for</span><span style="color: #000000; "> (i </span><span style="color: #000000; ">=</span><span style="color: #000000; "> </span><span style="color: #000000; ">2</span><span style="color: #000000; ">; i </span><span style="color: #000000; "><=</span><span style="color: #000000; "> n; i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)<br />        {<br />            f[i][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> f[i </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; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> f[i </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; ">1</span><span style="color: #000000; ">];<br />            f[i][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">] </span><span style="color: #000000; ">=</span><span style="color: #000000; "> f[i </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; ">0</span><span style="color: #000000; ">];<br />        }<br />        printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">Scenario #%d:\n%d\n\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">, t</span><span style="color: #000000; ">++</span><span style="color: #000000; ">, f[n][</span><span style="color: #000000; ">0</span><span style="color: #000000; ">] </span><span style="color: #000000; ">+</span><span style="color: #000000; "> f[n][</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);<br />    }<br />    </span><span style="color: #0000FF; ">return</span><span style="color: #000000; "> </span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></div><p>好吧Q我真心知道Q这道DP真是C定䆾儿上的水Q但是我q是军_把它贴上来?/p><p>题目大意是用n?或?l成一个序列,每两?不能盔RQ问又多种l成Ҏ(gu)?/p><p>E稍考虑了一下,肯定是先考虑Wi个数的时候有几种Q第i个数嘛,不是0是1Q于是乎Q考虑Wi-1个数Q如果第i个数?Q那Wi-1个数放什么都无所谓,如果Wi个数?Q那Wi-1个数只能放0Q貌D个状态还是非常好认的是?#8230;…</p><p>f[i][0]表示Wi个数?的时候,有多种放法</p><p>f[i][1]表示Wi个数?的时候,有多种放法</p><p>Ҏ(gu)前面的推|f[i][0]=f[i-1][0]+f[i-1][1]Qf[i][1]=f[i-1][0]?/p><p>然后q道题就没有然后了,只是丢h的是……我竟然因为少打了一个回车错了好几次……?#8230;…orz?/p><p>q道题好象是能证明出来是个斐波那切数列,是不是的我不了Q反正当DP做是A?#8230;…</p><p>好吧Q这道题很水其实Q我想的也不慢,l箋入门d……</p> </div></div><img src ="http://www.shnenglu.com/qhpeklh5959/aggbug/194202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/qhpeklh5959/" target="_blank">雨?/a> 2012-11-03 16:50 <a href="http://www.shnenglu.com/qhpeklh5959/articles/194202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.infotme.com.cn" target="_blank">yellowĻþ</a>| <a href="http://www.bsgrhb.cn" target="_blank">Ʒgzþþ</a>| <a href="http://www.njw2008.cn" target="_blank">þþƷһAV</a>| <a href="http://www.foundxy.cn" target="_blank">þþþAVרɫ</a>| <a href="http://www.hbxdh.cn" target="_blank">AVݺɫۺϾþ</a>| <a href="http://www.adlai.cn" target="_blank">޾Ʒþþþþò</a>| <a href="http://www.cqxuexi.cn" target="_blank">ɫ͵͵þһ</a>| <a href="http://www.yizhu888.cn" target="_blank">AAAþþþƷ</a>| <a href="http://www.mz025.cn" target="_blank">þһѵ</a>| <a href="http://www.zgwlptw.cn" target="_blank">ٸ88þĻ</a>| <a href="http://www.zhougong.net.cn" target="_blank">þùƷþþ</a>| <a href="http://www.7cdy.cn" target="_blank">þþþAVվ </a>| <a href="http://www.izakka.net.cn" target="_blank">97ȾþƵƷ99</a>| <a href="http://www.songyufen.cn" target="_blank">Ʒþþþһ</a>| <a href="http://www.niuav.cn" target="_blank">ҹŷƷþþþþþ</a>| <a href="http://www.kuaixiansou.cn" target="_blank">þþþƷר</a>| <a href="http://www.020hb.com.cn" target="_blank">޾ƷŮþ777777</a>| <a href="http://www.sun-yan.cn" target="_blank">Ļ˾þ</a>| <a href="http://www.xjyjd.cn" target="_blank">91Ʒþþþþ91</a>| <a href="http://www.3hiis.cn" target="_blank">18պҹþó</a>| <a href="http://www.lovebuyhome.com.cn" target="_blank">AëƬþþþƷëƬ</a>| <a href="http://www.vaez.cn" target="_blank">þùƷ77777</a>| <a href="http://www.lbao.net.cn" target="_blank">þþƷ2020</a>| <a href="http://www.gsm1.com.cn" target="_blank">ŵþ</a>| <a href="http://www.jywxhs.cn" target="_blank">þþþþëƬѿ</a>| <a href="http://www.cqtqtz.cn" target="_blank">99þþƷѿһ</a>| <a href="http://www.wannianl.cn" target="_blank">þúݺݸ߳޾Ʒ</a>| <a href="http://www.13gf.cn" target="_blank">ŷѹۿþ</a>| <a href="http://www.shishanfz.cn" target="_blank">Ļþ</a>| <a href="http://www.ahzyjlr.cn" target="_blank">ձþĻ</a>| <a href="http://www.hystech.cn" target="_blank">ҹƷþþĸ</a>| <a href="http://www.joyitsai.cn" target="_blank">þ99þóѲ</a>| <a href="http://www.hzust.cn" target="_blank">ձѾþþþþþվ</a>| <a href="http://www.fxmodels.com.cn" target="_blank">þݺҹҹavapp</a>| <a href="http://www.gp9222.cn" target="_blank">޹Ʒ˾þ</a>| <a href="http://www.wfmo.cn" target="_blank">ɫ8þ97㽶987</a>| <a href="http://www.fc117.cn" target="_blank">˾þô߽avһ</a>| <a href="http://www.lphbca.org.cn" target="_blank">þþþþþƷѿSSS</a>| <a href="http://www.91chd.cn" target="_blank">AëƬþþƷ</a>| <a href="http://www.tthzk.cn" target="_blank">Ʒһþ</a>| <a href="http://www.96papa.cn" target="_blank">þþƷŷ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>