﻿<?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++博客-I want to be CRAZY!!!-随笔分类-动态规划</title><link>http://www.cppblog.com/phonism/category/19746.html</link><description>本来无望的事，大胆尝试，往往能成功。</description><language>zh-cn</language><lastBuildDate>Sun, 23 Sep 2012 16:22:47 GMT</lastBuildDate><pubDate>Sun, 23 Sep 2012 16:22:47 GMT</pubDate><ttl>60</ttl><item><title>DP求期望入门</title><link>http://www.cppblog.com/phonism/archive/2012/09/18/191146.html</link><dc:creator>phonism</dc:creator><author>phonism</author><pubDate>Tue, 18 Sep 2012 12:07:00 GMT</pubDate><guid>http://www.cppblog.com/phonism/archive/2012/09/18/191146.html</guid><wfw:comment>http://www.cppblog.com/phonism/comments/191146.html</wfw:comment><comments>http://www.cppblog.com/phonism/archive/2012/09/18/191146.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/phonism/comments/commentRss/191146.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/phonism/services/trackbacks/191146.html</trackback:ping><description><![CDATA[&lt;题意题解等等再补^_^&gt;<br />求概率：<a href="http://livearchive.onlinejudge.org/index.php?option=com_onlinejudge&amp;Itemid=8&amp;page=show_problem&amp;problem=3874" target="_blank"><br />uvalive5863</a>&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=4089" target="_blank">hdu4089</a><br />求期望：<br /><a href="http://poj.org/problem?id=2096" target="_blank">poj2096</a>&nbsp;<a href="http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3329" target="_blank">zoj3329</a>&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=4035" target="_blank">hdu4035</a><img src ="http://www.cppblog.com/phonism/aggbug/191146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/phonism/" target="_blank">phonism</a> 2012-09-18 20:07 <a href="http://www.cppblog.com/phonism/archive/2012/09/18/191146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅尝状态压缩</title><link>http://www.cppblog.com/phonism/archive/2012/08/09/186731.html</link><dc:creator>phonism</dc:creator><author>phonism</author><pubDate>Thu, 09 Aug 2012 04:29:00 GMT</pubDate><guid>http://www.cppblog.com/phonism/archive/2012/08/09/186731.html</guid><wfw:comment>http://www.cppblog.com/phonism/comments/186731.html</wfw:comment><comments>http://www.cppblog.com/phonism/archive/2012/08/09/186731.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/phonism/comments/commentRss/186731.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/phonism/services/trackbacks/186731.html</trackback:ping><description><![CDATA[&nbsp; &nbsp; 学习状态压缩，首先要会基础的<a href="http://zh.wikipedia.org/wiki/%E4%BD%8D%E6%93%8D%E4%BD%9C" target="_blank">位运算</a>，然后要知道位运算的一些基本应用，这方面<a href="http://www.matrix67.com/blog/archives/263/" target="_blank">Matrix67大牛</a>总结的很好。学习了这些，接下来可以看看<a href="http://wenku.baidu.com/view/16d299d63186bceb19e8bb12.html" target="_blank">这篇论文</a>，讲的挺好。<img src ="http://www.cppblog.com/phonism/aggbug/186731.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/phonism/" target="_blank">phonism</a> 2012-08-09 12:29 <a href="http://www.cppblog.com/phonism/archive/2012/08/09/186731.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>背包小记</title><link>http://www.cppblog.com/phonism/archive/2012/08/04/186274.html</link><dc:creator>phonism</dc:creator><author>phonism</author><pubDate>Sat, 04 Aug 2012 10:05:00 GMT</pubDate><guid>http://www.cppblog.com/phonism/archive/2012/08/04/186274.html</guid><wfw:comment>http://www.cppblog.com/phonism/comments/186274.html</wfw:comment><comments>http://www.cppblog.com/phonism/archive/2012/08/04/186274.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/phonism/comments/commentRss/186274.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/phonism/services/trackbacks/186274.html</trackback:ping><description><![CDATA[今天做了一下背包专题，连接<a href="http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10736#overview">http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=10736#overview</a>密码是：sduacm&nbsp;个人觉得这几题都很不错<br />额，第一题就不说了，普通的0－1背包<br /><br />G题(HDU4091)是2011年上海区预赛第一题，据说AC这道题就可以拿铜牌了(囧) 题意是给俩个物品，每个物品有价值和体积，显然直接贪心不对，可以当作背包来解，但背包的容量很大，不能直接背包。这题的做法是：现求总容量对俩个物品的体积的LCM取余的余数，然后在余数中枚举，对其他的容量贪心，很容易证明这个思路的正确性。<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_182103" onclick="this.style.display='none'; Code_Closed_Text_182103.style.display='none'; Code_Open_Image_182103.style.display='inline'; Code_Open_Text_182103.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_182103" style="display: none" onclick="this.style.display='none'; Code_Open_Text_182103.style.display='none'; Code_Closed_Image_182103.style.display='inline'; Code_Closed_Text_182103.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_182103" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">HDU4091</span><span id="Code_Open_Text_182103" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">//</span><span style="color: #008000; ">枚举即可破&nbsp;因为只有俩种物品&nbsp;找到俩种物品体积的lcm然后去余&nbsp;对余数枚举<br /></span><span style="color: #008000; ">//</span><span style="color: #008000; ">然后对其他的贪心&nbsp;</span><span style="color: #008000; "><br /></span><br />#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;cstdio&gt;<br />#include&nbsp;&lt;cstring&gt;<br /><span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><span style="color: #0000FF; ">#define</span>&nbsp;LL&nbsp;long&nbsp;long<br /><br />LL&nbsp;gcd(LL&nbsp;a,&nbsp;LL&nbsp;b)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;b&nbsp;?&nbsp;gcd(b,&nbsp;a&nbsp;%&nbsp;b)&nbsp;:&nbsp;a;<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;n,&nbsp;s1,&nbsp;v1,&nbsp;s2,&nbsp;v2;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(scanf("%d",&nbsp;&amp;t)&nbsp;!=&nbsp;EOF)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;cas&nbsp;=&nbsp;1;&nbsp;cas&nbsp;&lt;=&nbsp;t;&nbsp;cas++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf("%I64d%I64d%I64d%I64d%I64d",&nbsp;&amp;n,&nbsp;&amp;s1,&nbsp;&amp;v1,&nbsp;&amp;s2,&nbsp;&amp;v2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;tmp&nbsp;=&nbsp;2&nbsp;*&nbsp;s1&nbsp;*&nbsp;s2&nbsp;/&nbsp;gcd(s1,&nbsp;s2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;tem&nbsp;=&nbsp;n&nbsp;/&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;%=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(tem)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tem--;&nbsp;n&nbsp;+=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;res&nbsp;=&nbsp;max((tem)*(tmp/s1)*v1,&nbsp;(tem)*(tmp/s2)*v2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LL&nbsp;temp&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(s2&nbsp;&gt;&nbsp;s1)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(s1,&nbsp;s2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;swap(v1,&nbsp;v2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;=&nbsp;n&nbsp;/&nbsp;s1;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(temp&nbsp;&lt;&nbsp;i*v1&nbsp;+&nbsp;(n-i*s1)/s2*v2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;i*v1&nbsp;+&nbsp;(n-i*s1)/s2*v2;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;+=&nbsp;temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("Case&nbsp;#%d:&nbsp;%I64d\n",&nbsp;cas,&nbsp;res);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /></span></div><br />I题(SGU259)单机调度问题，题意是只有一个打印机，有许多传单需要打印和分发，打印的时间T[i]，分发的时间是L[i]，每个传单必须先打印后分发，假设有很多分发员，问将左右的传单打印并且分发完所用完的最短时间。这题直观有个感觉就是因为分发员有很多人，分发时间长的传单显然先打印比较好，并且很容易证明这个贪心思想的正确性。因此对L从大到小排序，然后再求的时间就是最短的时间。<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_182021" onclick="this.style.display='none'; Code_Closed_Text_182021.style.display='none'; Code_Open_Image_182021.style.display='inline'; Code_Open_Text_182021.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_182021" style="display: none" onclick="this.style.display='none'; Code_Open_Text_182021.style.display='none'; Code_Closed_Image_182021.style.display='inline'; Code_Closed_Text_182021.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_182021" style="border: 1px solid #808080; background-color: #ffffff; ">SGU259</span><span id="Code_Open_Text_182021" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Author:&nbsp;&nbsp;whxnwjq<br />&nbsp;*&nbsp;Algorithm:&nbsp;<br />&nbsp;*&nbsp;File&nbsp;Name:&nbsp;I.cpp<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />#include&nbsp;&lt;map&gt;<br />#include&nbsp;&lt;queue&gt;<br />#include&nbsp;&lt;cmath&gt;<br />#include&nbsp;&lt;<span style="color: #0000FF; ">string</span>&gt;<br />#include&nbsp;&lt;cstring&gt;<br />#include&nbsp;&lt;algorithm&gt;<br />#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;cstdlib&gt;<br />#include&nbsp;&lt;vector&gt;<br />#include&nbsp;&lt;cstdio&gt;<br />#include&nbsp;&lt;stack&gt;<br />#include&nbsp;&lt;<span style="color: #0000FF; ">set</span>&gt;<br /><span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><br /><span style="color: #0000FF; ">#define</span>&nbsp;PI&nbsp;acos(-1)<br /><span style="color: #0000FF; ">#define</span>&nbsp;LL&nbsp;long&nbsp;long<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;inf&nbsp;=&nbsp;0x7fffffff;<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;eps&nbsp;=&nbsp;1e-6;<br /><br /><span style="color: #0000FF; ">struct</span>&nbsp;Node&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t,&nbsp;l;<br />}a[222];<br /><br /><span style="color: #0000FF; ">bool</span>&nbsp;cmp(Node&nbsp;x,&nbsp;Node&nbsp;y)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;x.l&nbsp;&gt;&nbsp;y.l;<br />}<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;T,&nbsp;sum,&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(cin&nbsp;&gt;&gt;&nbsp;T)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;=&nbsp;0,&nbsp;tmp&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;T;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;a[i].t;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;T;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;a[i].l;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(a,&nbsp;a+T,&nbsp;cmp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;T;&nbsp;i++)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;a[i].t;&nbsp;tmp&nbsp;-=&nbsp;a[i].t;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(tmp&nbsp;&lt;&nbsp;0)&nbsp;tmp&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp&nbsp;=&nbsp;max(a[i].l,&nbsp;tmp);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;+=&nbsp;tmp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;sum&nbsp;&lt;&lt;&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /></span></div><br />SPOJ39_PIGBANK：这题是个经典的完全背包问题，题意是有个储蓄罐，知道了空的时候的质量和装满硬币的质量，给了一些硬币的质量和价值，求储蓄罐装满时硬币的最小价值。<br />经典题。<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_163150" onclick="this.style.display='none'; Code_Closed_Text_163150.style.display='none'; Code_Open_Image_163150.style.display='inline'; Code_Open_Text_163150.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top"><img id="Code_Open_Image_163150" style="display: none" onclick="this.style.display='none'; Code_Open_Text_163150.style.display='none'; Code_Closed_Image_163150.style.display='inline'; Code_Closed_Text_163150.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top"><span id="Code_Closed_Text_163150" style="border-right: #808080 1px solid; border-top: #808080 1px solid; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff">SPOJ39_PIGBANK</span><span id="Code_Open_Text_163150" style="display: none"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;*&nbsp;Author:&nbsp;&nbsp;phonism<br />&nbsp;*&nbsp;Algorithm:&nbsp;完全背包经典题<br />&nbsp;*&nbsp;File&nbsp;Name:&nbsp;spoj39_PIGBANK.cpp<br />&nbsp;</span><span style="color: #008000; ">*/</span><br />#include&nbsp;&lt;map&gt;<br />#include&nbsp;&lt;queue&gt;<br />#include&nbsp;&lt;cmath&gt;<br />#include&nbsp;&lt;<span style="color: #0000FF; ">string</span>&gt;<br />#include&nbsp;&lt;cstring&gt;<br />#include&nbsp;&lt;algorithm&gt;<br />#include&nbsp;&lt;iostream&gt;<br />#include&nbsp;&lt;cstdlib&gt;<br />#include&nbsp;&lt;vector&gt;<br />#include&nbsp;&lt;cstdio&gt;<br />#include&nbsp;&lt;stack&gt;<br />#include&nbsp;&lt;<span style="color: #0000FF; ">set</span>&gt;<br /><span style="color: #0000FF; ">using</span>&nbsp;<span style="color: #0000FF; ">namespace</span>&nbsp;std;<br /><br /><span style="color: #0000FF; ">#define</span>&nbsp;PI&nbsp;acos(-1)<br /><span style="color: #0000FF; ">#define</span>&nbsp;LL&nbsp;long&nbsp;long<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;inf&nbsp;=&nbsp;10101001;<br /><span style="color: #0000FF; ">const</span>&nbsp;<span style="color: #0000FF; ">double</span>&nbsp;eps&nbsp;=&nbsp;1e-6;<br /><br /><span style="color: #0000FF; ">int</span>&nbsp;main()&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">int</span>&nbsp;t,&nbsp;n,&nbsp;m,&nbsp;a,&nbsp;u[1000],&nbsp;v[1000],&nbsp;dp[11000];<br />&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">while</span>&nbsp;(t--)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;n&nbsp;&gt;&gt;&nbsp;m&nbsp;&gt;&gt;&nbsp;a;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;a;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;&gt;&gt;&nbsp;u[i]&nbsp;&gt;&gt;&nbsp;v[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;11000;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i]&nbsp;=&nbsp;inf;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[0]&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;i&nbsp;=&nbsp;1;&nbsp;i&nbsp;&lt;=&nbsp;a;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">for</span>&nbsp;(<span style="color: #0000FF; ">int</span>&nbsp;j&nbsp;=&nbsp;v[i];&nbsp;j&nbsp;&lt;=&nbsp;m&nbsp;-&nbsp;n;&nbsp;j++)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[j]&nbsp;=&nbsp;min(dp[j],&nbsp;dp[j-v[i]]&nbsp;+&nbsp;u[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">if</span>&nbsp;(dp[m-n]&nbsp;!=&nbsp;inf)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;"The&nbsp;minimum&nbsp;amount&nbsp;of&nbsp;money&nbsp;in&nbsp;the&nbsp;piggy-bank&nbsp;is&nbsp;";<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;dp[m-n]&nbsp;&lt;&lt;&nbsp;"."&nbsp;&lt;&lt;&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">else</span>&nbsp;puts("This&nbsp;is&nbsp;impossible.");<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000FF; ">return</span>&nbsp;0;<br />}<br /><br /></span></div><br /><br /><br /><br /><br /><br /><img id="Code_Closed_Image_180912" onclick="this.style.display='none'; Code_Closed_Text_180912.style.display='none'; Code_Open_Image_180912.style.display='inline'; Code_Open_Text_180912.style.display='inline';" height="16" src="http://www.cppblog.com/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" style="font-size: 13px; display: none; "><span id="Code_Closed_Text_180912" style="font-size: 13px; border: 1px solid #808080; background-color: #ffffff; display: none; ">HDU4091</span><img src ="http://www.cppblog.com/phonism/aggbug/186274.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/phonism/" target="_blank">phonism</a> 2012-08-04 18:05 <a href="http://www.cppblog.com/phonism/archive/2012/08/04/186274.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>