﻿<?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++博客-解题报告-随笔分类-poj</title><link>http://www.cppblog.com/gongzhitaao/category/20549.html</link><description>&lt;a href="http://poj.org"&gt;POJ&lt;/a&gt;, &lt;a href="http://uva.onlinejudge.org"&gt;UVa&lt;/a&gt;,&lt;a href="https://vijos.org/"&gt;Vijos&lt;/a&gt;&lt;br/&gt;
Code: &lt;a href="https://github.com/gongzhitaao/AC-Report"&gt;Github&lt;/a&gt;</description><language>zh-cn</language><lastBuildDate>Fri, 06 Sep 2013 10:35:03 GMT</lastBuildDate><pubDate>Fri, 06 Sep 2013 10:35:03 GMT</pubDate><ttl>60</ttl><item><title>POJ 1022 Packing Unit 4D Cubes</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203020.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Thu, 05 Sep 2013 03:50:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203020.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/203020.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/203020.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/203020.html</trackback:ping><description><![CDATA[<h2>总结</h2>
连通性判断
<h2>分析</h2>
题目很长，但是意思很简单。首先要做 data consistancy 的检查。
<ol>
<li> 如果 a 在 b 前面，但是 b 不在 a 后面，那么就是有问题的数据
<li> 如果不连通，数据也是有问题的
</ol>
数据没有问题之后，一次 DFS 就可以找到各个方向上的最长长度，比如设起始点的坐标为 (0,0,0,0)。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/203020.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-09-05 11:50 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203020.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1023 The Fun Number System</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203021.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Thu, 05 Sep 2013 03:46:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203021.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/203021.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203021.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/203021.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/203021.html</trackback:ping><description><![CDATA[<h2>总结</h2>
从最后一位开始判断
<h2>分析</h2>
<ol>
<li>如果$n$是偶数，那么最后一位一定是0。
<li>如果是奇数，那么最后一位一定是1。如果对应的比特位为正，那么$n \leftarrow (n-1) / 2$，否则 $n \leftarrow (n +1) / 2$。
</ol><img src ="http://www.cppblog.com/gongzhitaao/aggbug/203021.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-09-05 11:46 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203021.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1021 2D-Nim</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203019.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Thu, 05 Sep 2013 03:36:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203019.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/203019.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203019.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/203019.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/203019.html</trackback:ping><description><![CDATA[<h2>总结</h2>
就是连通性和图的同构判断。
<h2>分析</h2>
找出属于同一组的点很简单，DFS就可以搞定。图的同构可以用图的Hash来判断。这个不是我想出来的，是网上看来的：<br/>
$\sum\nolimits_{i,]} distance(p_i, p_j)$<br/>
即同一组中所有点的距离加起来，这个数值做为这个图的哈希值。我不知道如何去证明，但是目前我没找到反例。至少这个题可以用。如果有同学可以帮证明可以或是不可以，那就多谢了。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/203019.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-09-05 11:36 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/09/05/203019.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1020 Anniversary Cake</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/30/202862.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Thu, 29 Aug 2013 21:19:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/30/202862.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202862.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/30/202862.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202862.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202862.html</trackback:ping><description><![CDATA[<h2>总结</h2>
搜索问题。
<h2>分析</h2>
设：
<ol>
<li>$c_i$ 表示第$i$行最后一个被添的列，即第$i$行第$c_{i+1}$列以后是空的，以前都已经被添满
<li>$p_i$ 表示边长为$i$的蛋糕的数量
</ol>
基本想法如下：每次搜索都找到最短的那一行，然后试着添上蛋糕，如果不能添了就返回<code>false</code>。如果可以，那么就更新$c_i$和$p_i$继续搜索。
有人说直接暴搜也可以过。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202862.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-30 05:19 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/30/202862.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1019 Number Sequence</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202821.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Wed, 28 Aug 2013 00:29:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202821.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202821.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202821.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202821.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202821.html</trackback:ping><description><![CDATA[<h2>总结</h2>
简单但是有点绕。
<h2>分析</h2>
根据题意，基本的想法就是找到$S_k$，然后在$S_k$中找相应的数字。很多算法和实现都会有溢出的问题。
<h2>陷阱</h2>
如果一直WA，可能是溢出问题。将<code>int<code>换成<code>long long</code>试试。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202821.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-28 08:29 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202821.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1018 Communication System</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202820.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Wed, 28 Aug 2013 00:25:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202820.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202820.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202820.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202820.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202820.html</trackback:ping><description><![CDATA[<h2>总结</h2>
枚举即可
<h2>分析</h2>
<ol>
<li>找到所有最小带宽中最小的，$ b_0 $
<li>找到所有最大带宽中最小的，$ b_1 $
<li>计算在以上范围内所有可能的结果，选最大的输出即可
</ol>
这个是最笨的方法，可以通过，但是有0ms就可以AC的算法。我还没想出来。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202820.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-28 08:25 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202820.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1017 Packets</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202819.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Wed, 28 Aug 2013 00:22:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202819.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202819.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202819.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202819.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202819.html</trackback:ping><description><![CDATA[<h2>总结</h2>
简单的模拟问题。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-28 08:22 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/28/202819.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1016 Numbers That Count</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/24/202722.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Fri, 23 Aug 2013 19:51:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/24/202722.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202722.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/24/202722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202722.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202722.html</trackback:ping><description><![CDATA[<h2>总结</h2>
简单模拟
<h2>陷阱</h2>
边缘数据，70在15次进入长度为2的循环，而80在第16次进入长度为2的循环，按题目来说，80是"can not be cassified"。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-24 03:51 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/24/202722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1015 Jury Compromise</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/08/22/202693.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Wed, 21 Aug 2013 20:09:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/08/22/202693.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/202693.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/08/22/202693.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/202693.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/202693.html</trackback:ping><description><![CDATA[<h2>总结</h2>
动态规划问题
<h2>分析</h2>
目标是从$n$个人中选出$m$个人，使得：
<ol>
<li>$|D-P|$最小
<li>如果最小不唯一，选$D+P$最大一组
</ol>
设$s[i][j][k]$保存从$i$个人中选$j$个人的所有状态，那么根据第$i$个人选不选即可列出状态转移方程。
<h2>陷阱</h2>
状态数组的維数是可以减少的，可以将每一维去掉，但是需要有额外的操作：
<ul>
<li>考虑第$i$个人选不选时，还需要考虑这个人是否已经被选择
<li>要将结果按人的先后次序排序
</ul>
<img src ="http://www.cppblog.com/gongzhitaao/aggbug/202693.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-08-22 04:09 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/08/22/202693.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 1014 Dividing</title><link>http://www.cppblog.com/gongzhitaao/archive/2013/07/02/poj_1014.html</link><dc:creator>happyac</dc:creator><author>happyac</author><pubDate>Tue, 02 Jul 2013 05:24:00 GMT</pubDate><guid>http://www.cppblog.com/gongzhitaao/archive/2013/07/02/poj_1014.html</guid><wfw:comment>http://www.cppblog.com/gongzhitaao/comments/201458.html</wfw:comment><comments>http://www.cppblog.com/gongzhitaao/archive/2013/07/02/poj_1014.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/gongzhitaao/comments/commentRss/201458.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/gongzhitaao/services/trackbacks/201458.html</trackback:ping><description><![CDATA[<h2>總結</h2>
<ol>
<li>方法1：視爲多重揹包問題。請見<a href="http://love-oriented.com/pack/">dd牛揹包問題九講</a></li>
<li>方法2： 对于任意一种珠宝的个数n，如果n>=8, 可以将n改写为 11（n为奇数） 或 12（n为偶数）。<a href="http://www.blogjava.net/zellux/archive/2007/07/30/133416.html">証明</a></li>
</ol>
<h2>陷阱</h2>
不要將 "divided" 錯寫爲 "devided"，3 次 WA 都是因爲這個。<img src ="http://www.cppblog.com/gongzhitaao/aggbug/201458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/gongzhitaao/" target="_blank">happyac</a> 2013-07-02 13:24 <a href="http://www.cppblog.com/gongzhitaao/archive/2013/07/02/poj_1014.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>