﻿<?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++博客-Yuan-随笔分类-OThers</title><link>http://www.cppblog.com/Yuan/category/14382.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 09 Aug 2011 08:41:42 GMT</lastBuildDate><pubDate>Tue, 09 Aug 2011 08:41:42 GMT</pubDate><ttl>60</ttl><item><title>hdu 3403 回文日期</title><link>http://www.cppblog.com/Yuan/archive/2011/08/09/152846.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Tue, 09 Aug 2011 02:33:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/08/09/152846.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/152846.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/08/09/152846.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/152846.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/152846.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//*&nbsp;&nbsp;&nbsp;&nbsp;求第k&lt;=4000000个回文串的日期，不能有前置0&nbsp;如10011001&nbsp;&nbsp;&nbsp;&nbsp;形式为y...&nbsp;&nbsp;<a href='http://www.cppblog.com/Yuan/archive/2011/08/09/152846.html'>阅读全文</a><img src ="http://www.cppblog.com/Yuan/aggbug/152846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-08-09 10:33 <a href="http://www.cppblog.com/Yuan/archive/2011/08/09/152846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ural 1720 </title><link>http://www.cppblog.com/Yuan/archive/2011/08/01/152243.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Mon, 01 Aug 2011 15:14:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/08/01/152243.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/152243.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/08/01/152243.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/152243.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/152243.html</trackback:ping><description><![CDATA[<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: #008000; ">/*</span><span style="color: #008000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;为[l,r]区间内有多少个数是区间[x,y]中的数的和<br />&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&lt;=&nbsp;x,&nbsp;y,&nbsp;l,&nbsp;r&nbsp;&lt;=&nbsp;10^8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;&lt;=y,&nbsp;l&nbsp;&lt;=&nbsp;r<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;如果范围没这么大的话，对[x,y]这y-x+1个物品进行完全背包，找出覆盖了那些位置<br />&nbsp;&nbsp;&nbsp;&nbsp;现在数据这么大，背包不可行<br />&nbsp;&nbsp;&nbsp;&nbsp;但是，注意到[x,y]这是一个连续的区间，可以算出他们会覆盖的数是：<br />&nbsp;&nbsp;&nbsp;&nbsp;[x,y]&nbsp;,&nbsp;[2x,2y]&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;[kx,&nbsp;ky]<br />&nbsp;&nbsp;&nbsp;&nbsp;这样的话，我们要找满足[l,r]中的数，只要用f[r]&nbsp;-&nbsp;f[l-1]<br />&nbsp;&nbsp;&nbsp;&nbsp;f[x]表示[1,x]中被上面那些数覆盖的个数<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;要注意的是，有可能[(k-1)x,&nbsp;(k-1)y]与[kx,ky]有重叠部分（即(k-1)y&gt;=kx）<br />&nbsp;&nbsp;&nbsp;&nbsp;只要一开始重叠了，之后的所有点都会被覆盖了<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;数据比较大，有些判断需要用double<br /></span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">map</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stack</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdlib</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">list</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">numeric</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cassert</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">sstream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">ctime</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">bitset</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">functional</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /><br /></span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;gao(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;x,&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;y,&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;z,&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;k)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;l&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;r&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;z;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(l&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;r)&nbsp;{</span><span style="color: #008000; ">//</span><span style="color: #008000; ">find&nbsp;first&nbsp;l*y&nbsp;&gt;=&nbsp;z</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;m&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(l</span><span style="color: #000000; ">+</span><span style="color: #000000; ">r)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;((</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)m</span><span style="color: #000000; ">*</span><span style="color: #000000; ">y&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;z)&nbsp;l&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;m</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">要用double</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;r&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;m</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">[x,y]&nbsp;[2x,2y]&nbsp;<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;[(l-1)x,&nbsp;(l-1)y],&nbsp;[lx,&nbsp;ly]</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(l&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;k)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(y</span><span style="color: #000000; ">-</span><span style="color: #000000; ">x)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(k</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">k</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;z&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;:&nbsp;z</span><span style="color: #000000; ">-</span><span style="color: #000000; ">k</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(y</span><span style="color: #000000; ">-</span><span style="color: #000000; ">x)</span><span style="color: #000000; ">*</span><span style="color: #000000; ">(l</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; ">l</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(l</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;(l</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;z&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;:&nbsp;z</span><span style="color: #000000; ">-</span><span style="color: #000000; ">l</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;&nbsp;ans;<br />}<br /><br /></span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />#ifndef&nbsp;ONLINE_JUDGE<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">freopen("in.txt","r",stdin);</span><span style="color: #008000; "><br /></span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;x,&nbsp;y,&nbsp;l,&nbsp;r;&nbsp;cin</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">x</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">y</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">l</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">r;&nbsp;){&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(r&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;x&nbsp;)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(x&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;y)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">r</span><span style="color: #000000; ">/</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;(l</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; ">x&nbsp;</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">&nbsp;endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;lk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;rk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;y;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">while</span><span style="color: #000000; ">&nbsp;(lk&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;rk)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">long</span><span style="color: #000000; ">&nbsp;mk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;(lk</span><span style="color: #000000; ">+</span><span style="color: #000000; ">rk)</span><span style="color: #000000; ">/</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">要用double</span><span style="color: #008000; "><br /></span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;((</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)mk</span><span style="color: #000000; ">*</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;((</span><span style="color: #0000FF; ">double</span><span style="color: #000000; ">)mk</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; ">y)&nbsp;lk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mk&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">else</span><span style="color: #000000; ">&nbsp;rk&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mk</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">[rk*x,&nbsp;oo)</span><span style="color: #008000; "><br /></span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">gao(x,&nbsp;y,&nbsp;r,&nbsp;rk)&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;gao(x,&nbsp;y,&nbsp;l</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;rk)</span><span style="color: #000000; ">&lt;&lt;</span><span style="color: #000000; ">endl;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div><img src ="http://www.cppblog.com/Yuan/aggbug/152243.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-08-01 23:14 <a href="http://www.cppblog.com/Yuan/archive/2011/08/01/152243.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 3274 保存相对值</title><link>http://www.cppblog.com/Yuan/archive/2011/07/16/151138.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Sat, 16 Jul 2011 02:40:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/07/16/151138.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/151138.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/07/16/151138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/151138.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/151138.html</trackback:ping><description><![CDATA[<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: #008000; ">/*</span><span style="color: #008000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;n个数，求最长的连续一段，使得这一段数字，二进制中每一位拥有1的那些数字的个数相等<br />
&nbsp;&nbsp;&nbsp;&nbsp;n&lt;=10^5，位数k&lt;=30<br />
&nbsp;&nbsp;&nbsp;&nbsp;如<br />
&nbsp;&nbsp;&nbsp;&nbsp;7&nbsp;2&nbsp;1&nbsp;4&nbsp;这里每一位1都有2个数字拥有<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;容易想到先预处理出sum[n,k]表示前面n个数字中在第k位是1的个数<br />
&nbsp;&nbsp;&nbsp;&nbsp;这k个数字sum[n,k]的样子就是曲线形的，如sum[i,k]为&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_&nbsp;&nbsp;&nbsp;/\&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;\/&nbsp;&nbsp;&nbsp;\_/\&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;为了使得sum[i,k]&nbsp;-&nbsp;sum[j,k]对所有k都是同一个数<br />
&nbsp;&nbsp;&nbsp;&nbsp;则sum[j,k]的样子也必须是这样的，这样sum[i,k]&nbsp;-&nbsp;sum[j,k]才是一个同一个数（类似拼接时图形需吻合）<br />
&nbsp;&nbsp;&nbsp;&nbsp;好了，所以我们需要保存这个图形，可以通过保存a[i,k]&nbsp;=&nbsp;sum[i,k]&nbsp;-&nbsp;sum[i,0]即可（即保存相对值）&nbsp;&nbsp;&nbsp;&nbsp;-----OMG<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;我一开始用map&lt;vector&lt;int&gt;,&nbsp;int&gt;，&nbsp;vector&lt;int&gt;是保存图形，int是保存第一次出现的地方<br />
&nbsp;&nbsp;&nbsp;&nbsp;在for到i时，计算出图形，在map中找有没出现过，有的话就更新答案为i-mp[vt]<br />
&nbsp;&nbsp;&nbsp;&nbsp;vector是有重载比较运算符的，所以不用写其他<br />
&nbsp;&nbsp;&nbsp;&nbsp;但是超时了，我在本机测貌似不会超时<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;&nbsp;--||<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;看了解题报告，方法一样，但是不是用map，是最后sort一次的<br />
&nbsp;&nbsp;&nbsp;&nbsp;对哦，我想起之前也有一道题，又不需要每个i都输出结果，不用map，直接最后sort一次更好<br />
&nbsp;&nbsp;&nbsp;&nbsp;用map会慢一点<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;但这样还超时，原来是vector的比较比较慢<br />
&nbsp;&nbsp;&nbsp;&nbsp;自己写了个struct&nbsp;Node&nbsp;{int&nbsp;vt[30];};&nbsp;再重载比较过了<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;sort时，可以对下标排序，减少了大数据移动<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;这题官方有另外解法，就是对数组vt[30]&nbsp;hash<br />
&nbsp;&nbsp;&nbsp;&nbsp;好的hash函数会快很多吧<br />
&nbsp;&nbsp;&nbsp;&nbsp;hsize=997001;<br />
&nbsp;&nbsp;&nbsp;&nbsp;for(p=0,i=0;i&lt;k;i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p=((p&lt;&lt;2)+(v[i]&gt;&gt;4))^(v[i]&lt;&lt;10);<br />
&nbsp;&nbsp;&nbsp;&nbsp;p=p%hsize;<br />
&nbsp;&nbsp;&nbsp;&nbsp;if(p&lt;0)&nbsp;&nbsp;&nbsp;&nbsp;p+=hsize;<br />
</span><span style="color: #008000; ">*/</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">map</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">stack</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">string</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdlib</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">set</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">list</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">numeric</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cassert</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">sstream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">ctime</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">bitset</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
#include</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">functional</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />
<br />
</span><span style="color: #0000FF; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br />
<br />
</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;MAXN&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">100100</span><span style="color: #000000; ">;<br />
<br />
</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;n,&nbsp;k;<br />
<br />
</span><span style="color: #0000FF; ">struct</span><span style="color: #000000; ">&nbsp;Node<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;vt[</span><span style="color: #000000; ">30</span><span style="color: #000000; ">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;clear()<br />
&nbsp;&nbsp;&nbsp;&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(vt,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">sizeof</span><span style="color: #000000; ">&nbsp;vt);<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
};<br />
<br />
</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">operator</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;Node&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">A,&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;Node&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">B)&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">直接用vector的比较会慢<img src="http://www.cppblog.com/Images/dot.gif"  alt="" />&nbsp;&nbsp;可能数据太大吧</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;k&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(A.vt[i]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;B.vt[i])&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;A.vt[i]&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;B.vt[i];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">false</span><span style="color: #000000; ">;<br />
}<br />
<br />
pair</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">Node,&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;all[MAXN];<br />
<br />
inline&nbsp;</span><span style="color: #0000FF; ">bool</span><span style="color: #000000; ">&nbsp;cmp(</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,&nbsp;</span><span style="color: #0000FF; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b)<br />
{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;all[a]&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;all[b];<br />
}<br />
<br />
</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;main()<br />
{<br />
#ifndef&nbsp;ONLINE_JUDGE<br />
&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">in</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,</span><span style="color: #000000; ">"</span><span style="color: #000000; ">r</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,stdin);<br />
</span><span style="color: #0000FF; ">#endif</span><span style="color: #000000; "><br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(;&nbsp;</span><span style="color: #000000; ">~</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; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">k);&nbsp;)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;long&nbsp;long&nbsp;start&nbsp;=&nbsp;clock();</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;vt(k</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">),&nbsp;pos(n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">].first.clear();</span><span style="color: #008000; ">//</span><span style="color: #008000; ">don't&nbsp;forget&nbsp;to&nbsp;push&nbsp;k-1&nbsp;zeros</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">].second&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="color: #000000; ">&lt;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;sum(k);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;x;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;k;&nbsp;j</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[j]&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;(x</span><span style="color: #000000; ">&gt;&gt;</span><span style="color: #000000; ">j)&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all[i].first.vt[j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sum[j]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;sum[j</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;all[i].second&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(pos.begin(),&nbsp;pos.end(),&nbsp;cmp);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000FF; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;last&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i</span><span style="color: #000000; ">++</span><span style="color: #000000; ">)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;n</span><span style="color: #000000; ">+</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;&nbsp;all[pos[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]].first&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;all[pos[i]].first)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;max(ans,&nbsp;all[pos[i</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]].second&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;all[pos[last]].second);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;ans);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000; ">//</span><span style="color: #008000; ">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"time&nbsp;&nbsp;&nbsp;"&lt;&lt;clock()&nbsp;-&nbsp;start&lt;&lt;endl;</span><span style="color: #008000; "><br />
</span><span style="color: #000000; ">&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />
}</span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/151138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-07-16 10:40 <a href="http://www.cppblog.com/Yuan/archive/2011/07/16/151138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CF78D 统计的方法</title><link>http://www.cppblog.com/Yuan/archive/2011/05/13/146298.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Fri, 13 May 2011 01:27:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/05/13/146298.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/146298.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/05/13/146298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/146298.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/146298.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_321_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_321_Open_Text.style.display='none'; Codehighlighter1_0_321_Closed_Image.style.display='inline'; Codehighlighter1_0_321_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_321_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_321_Closed_Text.style.display='none'; Codehighlighter1_0_321_Open_Image.style.display='inline'; Codehighlighter1_0_321_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_321_Closed_Text>/**/</span><span id=Codehighlighter1_0_321_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;如果所示的6边形图，询问半径为r的圆能完整包含多少个6边形<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;一开始想找规律，wa<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;看了解题报告，解法很好<img src="http://www.cppblog.com/Images/dot.gif">.<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;先向上找到最高的被完全包含的6边形，然后往右上走<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;若右上越界了，就下一层<img src="http://www.cppblog.com/Images/dot.gif">.就这样<img src="http://www.cppblog.com/Images/dot.gif">.一边走一边统计<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------------------OMG<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;若以中间那块的中心为坐标原点的话，可以发现所以六边形的顶点的坐标会是(1/2x,&nbsp;sqrt(3)/2y)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;如(0.5,&nbsp;sqrt(3)/2)等，这里x,y是整数<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;不超过圆就有x*x&nbsp;+&nbsp;3*y*y&nbsp;&lt;=&nbsp;4*r*r<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;然后x,y可以用整数点去走，用上面的表达式去判出界<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;代码是看第一名的那个~~~Orz<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cmath</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">algorithm</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_429_1013_Open_Image onclick="this.style.display='none'; Codehighlighter1_429_1013_Open_Text.style.display='none'; Codehighlighter1_429_1013_Closed_Image.style.display='inline'; Codehighlighter1_429_1013_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_429_1013_Closed_Image onclick="this.style.display='none'; Codehighlighter1_429_1013_Closed_Text.style.display='none'; Codehighlighter1_429_1013_Open_Image.style.display='inline'; Codehighlighter1_429_1013_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_429_1013_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_429_1013_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">freopen("in",&nbsp;"r"&nbsp;,stdin);</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_497_997_Open_Image onclick="this.style.display='none'; Codehighlighter1_497_997_Open_Text.style.display='none'; Codehighlighter1_497_997_Closed_Image.style.display='inline'; Codehighlighter1_497_997_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_497_997_Closed_Image onclick="this.style.display='none'; Codehighlighter1_497_997_Closed_Text.style.display='none'; Codehighlighter1_497_997_Open_Image.style.display='inline'; Codehighlighter1_497_997_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;r;&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;r;)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_497_997_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_497_997_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;ans&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;x&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,&nbsp;y&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_595_625_Open_Image onclick="this.style.display='none'; Codehighlighter1_595_625_Open_Text.style.display='none'; Codehighlighter1_595_625_Closed_Image.style.display='inline'; Codehighlighter1_595_625_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_595_625_Closed_Image onclick="this.style.display='none'; Codehighlighter1_595_625_Closed_Text.style.display='none'; Codehighlighter1_595_625_Open_Image.style.display='inline'; Codehighlighter1_595_625_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(x</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">x&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_595_625_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_595_625_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;y;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">右上角那块</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_726_963_Open_Image onclick="this.style.display='none'; Codehighlighter1_726_963_Open_Text.style.display='none'; Codehighlighter1_726_963_Closed_Image.style.display='inline'; Codehighlighter1_726_963_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_726_963_Closed_Image onclick="this.style.display='none'; Codehighlighter1_726_963_Closed_Text.style.display='none'; Codehighlighter1_726_963_Open_Image.style.display='inline'; Codehighlighter1_726_963_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(y&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_726_963_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_726_963_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_807_902_Open_Image onclick="this.style.display='none'; Codehighlighter1_807_902_Open_Text.style.display='none'; Codehighlighter1_807_902_Closed_Image.style.display='inline'; Codehighlighter1_807_902_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_807_902_Closed_Image onclick="this.style.display='none'; Codehighlighter1_807_902_Closed_Text.style.display='none'; Codehighlighter1_807_902_Open_Image.style.display='inline'; Codehighlighter1_807_902_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(x</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">x&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;(x</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">(x</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(y</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">(y</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">r&nbsp;)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_807_902_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_807_902_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">y;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">往右上</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_909_953_Open_Image onclick="this.style.display='none'; Codehighlighter1_909_953_Open_Text.style.display='none'; Codehighlighter1_909_953_Closed_Image.style.display='inline'; Codehighlighter1_909_953_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_909_953_Closed_Image onclick="this.style.display='none'; Codehighlighter1_909_953_Closed_Text.style.display='none'; Codehighlighter1_909_953_Open_Image.style.display='inline'; Codehighlighter1_909_953_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_909_953_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_909_953_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">下来一格</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;ans&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/146298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-05-13 09:27 <a href="http://www.cppblog.com/Yuan/archive/2011/05/13/146298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>76D 比较巧</title><link>http://www.cppblog.com/Yuan/archive/2011/05/02/145489.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Mon, 02 May 2011 06:29:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/05/02/145489.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/145489.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/05/02/145489.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/145489.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/145489.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_325_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_325_Open_Text.style.display='none'; Codehighlighter1_0_325_Closed_Image.style.display='inline'; Codehighlighter1_0_325_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_325_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_325_Closed_Text.style.display='none'; Codehighlighter1_0_325_Open_Image.style.display='inline'; Codehighlighter1_0_325_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_325_Closed_Text>/**/</span><span id=Codehighlighter1_0_325_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;给出A,B&nbsp;,求X,Y，使得&nbsp;A&nbsp;=&nbsp;X&nbsp;+&nbsp;Y,&nbsp;B&nbsp;=&nbsp;X&nbsp;xor&nbsp;Y。要使得X最小，若不存在输出-1<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;0&lt;=A,B&lt;2^64<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;看了解题报告的，挺巧的，切入点是：&#8220;使得X最小&#8221;&nbsp;&nbsp;-----------------OMG<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;若(X,Y)是满足条件的一对数，则检查每一位<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;若Xi&nbsp;=&nbsp;1,&nbsp;Yi&nbsp;=&nbsp;0&nbsp;则可交换这两位，上面的等式还是成立，但是X减小了，Y增大了<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;完成上面的操作后，(X,Y)的情况只能是(0,1),(0,0),(1,1)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;则有&nbsp;Y&nbsp;-&nbsp;X&nbsp;=&nbsp;X&nbsp;xor&nbsp;Y&nbsp;=&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------------------OMG<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;所以&nbsp;X&nbsp;=&nbsp;(A-B)/2&nbsp;,&nbsp;Y&nbsp;=&nbsp;(A+B)/2<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;巧丫<img src="http://www.cppblog.com/Images/dot.gif">..<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">algorithm</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stack</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">queue</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cmath</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">list</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">numeric</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cassert</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ctime</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">bitset</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_648_1103_Open_Image onclick="this.style.display='none'; Codehighlighter1_648_1103_Open_Text.style.display='none'; Codehighlighter1_648_1103_Closed_Image.style.display='inline'; Codehighlighter1_648_1103_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_648_1103_Closed_Image onclick="this.style.display='none'; Codehighlighter1_648_1103_Closed_Text.style.display='none'; Codehighlighter1_648_1103_Open_Image.style.display='inline'; Codehighlighter1_648_1103_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_648_1103_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_648_1103_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">#ifndef&nbsp;ONLINE_JUDGE<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdin);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img id=Codehighlighter1_749_1090_Open_Image onclick="this.style.display='none'; Codehighlighter1_749_1090_Open_Text.style.display='none'; Codehighlighter1_749_1090_Closed_Image.style.display='inline'; Codehighlighter1_749_1090_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_749_1090_Closed_Image onclick="this.style.display='none'; Codehighlighter1_749_1090_Closed_Text.style.display='none'; Codehighlighter1_749_1090_Open_Image.style.display='inline'; Codehighlighter1_749_1090_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(unsigned&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;A,&nbsp;B;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">B;&nbsp;)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_749_1090_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_749_1090_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">A&nbsp;=&nbsp;X&nbsp;+&nbsp;Y,&nbsp;B&nbsp;=&nbsp;X&nbsp;^&nbsp;Y&nbsp;.&nbsp;&nbsp;X&nbsp;is&nbsp;minimal<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">swap(xi,yi)&nbsp;if&nbsp;xi&nbsp;=&nbsp;1&nbsp;and&nbsp;yi&nbsp;=&nbsp;0,&nbsp;&nbsp;the&nbsp;equalities&nbsp;above&nbsp;mantian.<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">after&nbsp;all&nbsp;the&nbsp;swaping,&nbsp;we&nbsp;can&nbsp;find&nbsp;that<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">(xi,yi)&nbsp;can&nbsp;only&nbsp;be&nbsp;(0,1)&nbsp;,&nbsp;(0,0),&nbsp;(1,1)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">so&nbsp;X&nbsp;^&nbsp;Y&nbsp;=&nbsp;Y&nbsp;-&nbsp;X&nbsp;=&nbsp;B</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_1007_1034_Open_Image onclick="this.style.display='none'; Codehighlighter1_1007_1034_Open_Text.style.display='none'; Codehighlighter1_1007_1034_Closed_Image.style.display='inline'; Codehighlighter1_1007_1034_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1007_1034_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1007_1034_Closed_Text.style.display='none'; Codehighlighter1_1007_1034_Open_Image.style.display='inline'; Codehighlighter1_1007_1034_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(((A</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">&nbsp;(B</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))&nbsp;</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">&nbsp;A&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;B)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1007_1034_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1007_1034_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img id=Codehighlighter1_1041_1087_Open_Image onclick="this.style.display='none'; Codehighlighter1_1041_1087_Open_Text.style.display='none'; Codehighlighter1_1041_1087_Closed_Image.style.display='inline'; Codehighlighter1_1041_1087_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1041_1087_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1041_1087_Closed_Text.style.display='none'; Codehighlighter1_1041_1087_Open_Image.style.display='inline'; Codehighlighter1_1041_1087_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1041_1087_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1041_1087_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(A</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">B)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;(A</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">B)</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/145489.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-05-02 14:29 <a href="http://www.cppblog.com/Yuan/archive/2011/05/02/145489.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>zoj 3491  优先队列 很巧 路线的编码</title><link>http://www.cppblog.com/Yuan/archive/2011/04/28/145215.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Thu, 28 Apr 2011 06:50:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/04/28/145215.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/145215.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/04/28/145215.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/145215.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/145215.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /**//*&nbsp;&nbsp;&nbsp;&nbsp;N行，有M个僵尸，有K个坚果，按顺序从给定线路水平滚出&nbsp;&nbsp;&nbsp;&nbsp;坚果撞到僵尸或者边界都会改变路线以45&#176;滚动，问最后多少只僵尸被撞到了&nbsp;&nbsp;&nbsp;&nbsp;N&lt;=2000,&nbsp;M&lt;=200000,&nbsp;K&lt;=100000&nbsp;&...&nbsp;&nbsp;<a href='http://www.cppblog.com/Yuan/archive/2011/04/28/145215.html'>阅读全文</a><img src ="http://www.cppblog.com/Yuan/aggbug/145215.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-04-28 14:50 <a href="http://www.cppblog.com/Yuan/archive/2011/04/28/145215.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ural 1113  Jeep problem</title><link>http://www.cppblog.com/Yuan/archive/2011/03/23/142606.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Wed, 23 Mar 2011 12:32:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/03/23/142606.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/142606.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/03/23/142606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/142606.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/142606.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_945_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_945_Open_Text.style.display='none'; Codehighlighter1_0_945_Closed_Image.style.display='inline'; Codehighlighter1_0_945_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_945_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_945_Closed_Text.style.display='none'; Codehighlighter1_0_945_Open_Image.style.display='inline'; Codehighlighter1_0_945_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_945_Closed_Text>/**/</span><span id=Codehighlighter1_0_945_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;Jeep问题<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; TEXT-DECORATION: underline">http://en.wikipedia.org/wiki/Jeep_problem</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000; TEXT-DECORATION: underline">http://topic.csdn.net/t/20020906/13/1001713.html</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;一车要穿越沙漠，距离为dist,油箱能装的油tank，每行走1单位耗油1单位<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;车可以行驶到中间一些位置，放一些油方便以后用再回去加油，起点有无限的油可以加<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;问最少耗的油走完这一段路<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;车的轨迹如下，假设中间有n个位置放了油<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;----&gt;◆<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;---<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;---------------&gt;◆<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;---------------<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------------------------------------&gt;◆<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;---------------------------------------<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--------------------------------------------------------------------------&gt;&nbsp;E<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wiki上的说法是，假设油箱容量为1<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;第一次行驶1/(2n-1),然后在第一个加油站放1-2/(2n-1)的油,再用剩下的1/(2n-1)刚好回到S<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;以后的行驶中，行到第一个加油站时，加1/(2n-1)的油，所以油箱还满，然后再回到第一个加油站时，<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;取1/(2n-1)，就能回到S了<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;所以S与第一个加油站的距离就是1/(2n-1)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;而第二个加油站与第一个的距离，就是1/(2n-3)了&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;因为从第一个油站出发时油是满的，要被取2n-3次<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;第三个与第二个为1/(2n-5)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">.<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;到了最后一个油站时，加油后就是满的，一直开完到E<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;所以最后一个油站离E为1<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;上图就说明，到达一个油站时，它的油肯定是满的（取走过来的各个油站的一些油填充这一路消耗的油）<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;答案就是，从E往S<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;走的距离1&nbsp;+&nbsp;1/3&nbsp;+&nbsp;1/5&nbsp;<img src="http://www.cppblog.com/Images/dot.gif">&nbsp;+&nbsp;1/(2n-1)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;当然，S离第一个油站的距离可以小于1/(2n-1)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;round&nbsp;up&nbsp;是取上界<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;foj&nbsp;1076一样的<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;另外一种jeep问题就是要求最后回到S的，走的距离1+1/2+1/3<img src="http://www.cppblog.com/Images/dot.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">algorithm</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stack</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">queue</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cmath</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdlib</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">list</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">numeric</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cassert</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ctime</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_1251_1557_Open_Image onclick="this.style.display='none'; Codehighlighter1_1251_1557_Open_Text.style.display='none'; Codehighlighter1_1251_1557_Closed_Image.style.display='inline'; Codehighlighter1_1251_1557_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1251_1557_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1251_1557_Closed_Text.style.display='none'; Codehighlighter1_1251_1557_Open_Image.style.display='inline'; Codehighlighter1_1251_1557_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1251_1557_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1251_1557_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">#ifndef&nbsp;ONLINE_JUDGE<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">in</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">r</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,stdin);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #0000ff">#endif</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;dist,&nbsp;tank;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%lf%lf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">dist,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">tank);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;now&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;dist,&nbsp;cost&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,&nbsp;pre;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;k&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_1448_1487_Open_Image onclick="this.style.display='none'; Codehighlighter1_1448_1487_Open_Text.style.display='none'; Codehighlighter1_1448_1487_Closed_Image.style.display='inline'; Codehighlighter1_1448_1487_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1448_1487_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1448_1487_Closed_Text.style.display='none'; Codehighlighter1_1448_1487_Open_Image.style.display='inline'; Codehighlighter1_1448_1487_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;(pre&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;now&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">&nbsp;tank&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">k</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))&nbsp;</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1448_1487_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1448_1487_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;tank;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;now&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;pre;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cost&nbsp;</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">&nbsp;now&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">k</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%.0f\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;ceil(cost));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/142606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-03-23 20:32 <a href="http://www.cppblog.com/Yuan/archive/2011/03/23/142606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CodeForces 66</title><link>http://www.cppblog.com/Yuan/archive/2011/03/08/141327.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Tue, 08 Mar 2011 02:30:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/03/08/141327.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/141327.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/03/08/141327.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/141327.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/141327.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://codeforces.com/contest/66题目不是很难，为啥比赛时状态那么差...A 判断BigInteger可以用string来判断就行了，不用大整数B 水C 建树D我的那种构造方法肯定要大整数的，太懒了，居然不上javaE单调队列，之前做过类似的，sample画错... T_TD/**//*&nbsp;&nbsp;&nbsp;&nbsp;构造n个数，使得两两不互素，但...&nbsp;&nbsp;<a href='http://www.cppblog.com/Yuan/archive/2011/03/08/141327.html'>阅读全文</a><img src ="http://www.cppblog.com/Yuan/aggbug/141327.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-03-08 10:30 <a href="http://www.cppblog.com/Yuan/archive/2011/03/08/141327.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>贴做题记录...</title><link>http://www.cppblog.com/Yuan/archive/2011/01/05/138035.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Wed, 05 Jan 2011 12:12:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2011/01/05/138035.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/138035.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2011/01/05/138035.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/138035.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/138035.html</trackback:ping><description><![CDATA[<p>foj 1982 dp 设其中一个已知<br>/*<br>&nbsp;<a href="http://hi.baidu.com/topman3758/blog/item/a19e4af91effb975034f56d2.html">http://hi.baidu.com/topman3758/blog/item/a19e4af91effb975034f56d2.html</a><br>&nbsp;别人说的简单dp，我都不会做....#_#</p>
<p>&nbsp;题目给出一个串n&lt;=1000 串只会出现a,b,c三种字符<br>&nbsp;abc或bca可切成一块<br>&nbsp;设最后切出m0个abc , m1个bca，则答案为min{m0,m1}<br>&nbsp;求试答案最大</p>
<p><span style="BACKGROUND-COLOR: yellow">&nbsp;dp[i,j]表示前面i个字符切出了j个abc，能获得的最多dp[i,j]个bca</span></p>
<p>&nbsp;转移是看最后这个三个字母是什么<br>&nbsp;dp[i-3,j-1]&nbsp;&nbsp;&nbsp; &#8220;abc&#8221;<br>&nbsp;dp[i-3,j]+1&nbsp;&nbsp; "bca"<br>&nbsp;dp[i-1,j] </p>
<p>&nbsp;注意dp[i,j]&nbsp; 3*j&lt;=i&nbsp; ， 对于不存在的值不能引用，否则会出错！！</p>
<p>&nbsp;貌似这种有两个要求值的，都是设成一个已知<br>&nbsp;如这里前i个，有j个abc<br>&nbsp;<br>*/</p>
<p><br></p>
<p>zoj 3449</p>
<p>&nbsp;</p>
<p>/*</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>一个数字a（最多100000位），本来a = ∑ai*10^i，不断变为a' = ∑ai*x^i (x=1,2...9) 。</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>直至a&#8216;&lt;10 ，求此时的a'</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>比较变化前后的结果，发现变化后减少了∑ai(10^i-b^i)</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>一开始我就用Java大整数去逼近（减去10^i-b^i），使得结果趋近于10且小于10</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>超时了</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>看了watashi的，∑ai*10^i = ∑ai*x^i &nbsp;(mod 10-x)</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>&#8220;于是我们知道对10-b求模是关于这种运算的不变量，可以发现答案就是b+(n-10)%(10-b)&#8221;</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>其实我之前的那个不断逼近，其实就是 mod 10 - x 而已，脑残了！！！</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>因为(a^n - b^n) % (a-b) = 0</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>可以几位合在再mod会快点</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>最后结果要不断加上10-x，使得逼近于10</p>
<p>*/</p>
<p>&nbsp;</p>
<p>zoj 3450</p>
<p>&nbsp;</p>
<p>/*</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>一个定点p0，n个目标点<span style="WHITE-SPACE: pre" class=Apple-tab-span> </span>，每个目标点有敌人wi,要消灭该点需要ti时间</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>弱目标点在同一直线，必须先消灭近的才能消灭远的</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>问在T时间内最多能消除的敌人</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>分组背包</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>注意的是，坐标比较大，用double会精度不够</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>看了watashi的做法</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>他将坐标都除以他们的gcd ，相等的就是同一直线了，而gcd就用来判断距离了！！</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>这样将大数变小了！！！</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>注意的是gcd(abs(x),abs(y))要加绝对值</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></p>
<p>*/</p>
<p><br></p>
<p>zoj 3451</p>
<p>&nbsp;</p>
<p>/*</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>给出足球起点坐标，初速度大小，初速度方向，问球能不能进。</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>球每碰地一次速度减半</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>参考watashi的</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>注意有力量不足的情况</p>
<p>*/</p>
<div>zoj 3453</div>
<div>
<div>/*</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>一列敌人，每个敌人有生命值l[i]</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>哆啦A梦可以发射m个糖衣炮弹，每个炮弹会攻击最靠近右边的且生命值&gt;=ki的敌人</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>被攻击的敌人生命值变为1，该敌人会将他的朋友的生命值+1，其朋友区间为a[i],b[i]</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>如果找不到敌人，则所有敌人生命值+1</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>求最后生命值最大的</div>
<div><br></div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>note : 线段树查找满足条件的最靠近右边的写法</div>
<div>*/</div>
</div>
<p>&nbsp;</p>
<p>&nbsp;zoj 3354</p>
<p>&nbsp;</p>
<p>/*</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>给出一种映射f,问一个序列经过任意次映射的复合，问能得到多少种不同的文本</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>"he may encrypt the letter for several times. "</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>here may be ai=aj when i&#8800;j. 不是一一映射</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>如果是一一映射的，就是一个一个的环了（因为出度、入度为 1）</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>看watashi的</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>这题就变成环引出尾巴出来了</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>答案就成了：max{x[i]} + LCM{y[i]}</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>x[i]为尾巴长度，y[i]为环长度</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>注意求x[],y[]数组的方法，用栈</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>而求LCM时，要分解质因子才行</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>因为LCM(a%MOD,b%MOD) != LCM(a,b)%MOD</p>
<p>*/</p>
<div>zoj 3456</div>
<div>
<div>/*</div>
<div><br></div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>给出一个图，每增加一条边，问能否从0点遍历所有点回到0点，求最小时间</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>在一个点有停留时间stay[i]，经过边也有时间，但最多只能经过n-1条不同的边</div>
<div><br></div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>题目说了是一棵树，可以令 边权 = 2*原边权+stay[u]+stay[v]</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>则MST即为答案了</div>
<div><br></div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>答案是求能否在一年内访问完，注意有闰年</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>看watashi写法的</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>保留原有MST的边即可了，新加入的边，需小于MST的最大边，才允许加入，然后看能否得到更小的值</div>
<div><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>但每次下来，只需保留n-1条边（MST的边）</div>
<div><br></div>
<div>*/</div>
</div>
<p>&nbsp;</p>
<p>cf 56E</p>
<p>
<p>/*</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>n张多米诺骨牌排成一行，每一张在位置xi，高度为hi</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>它倒下的话会影响到[xi,xi+hi-1]，问每张骨牌最多能影响右边的多少张骨牌</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>令dp[i]表示第i张骨牌能影响到的最远的骨牌为dp[i]</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>dp[i] = max{dp[j]} &nbsp; x[i] &lt;= x[j] &lt;= x[i] + h[i] - 1</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>则第i张骨牌能影响到的骨牌数目为dp[i] - i + 1</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>我一开始用线段树搞，用单调队列也行</p>
<p><br></p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>看了别人代码，神奇，直接算就行了</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>第i张骨牌，检查的范围是[x[i],x[i]+h[i]-1]</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>如果在检查过程中发现j，其中dp[j]能影响的最远范围已经超过x[i]+h[i]-1的话，就不用再检查j之后到x[i]+h[i]-1</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>的骨牌了，因为从x[j]到x[i]+h[i]-1的已经被j考虑过了（也可认为是j到x[i]+h[i]-1最后只会收敛到dp[j]）</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>直接return dp[j]即可</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>反之，若未超过，则令 j = dp[j] + 1</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>跳跃性检查</p>
<p><span style="WHITE-SPACE: pre" class=Apple-tab-span></span>（认为j到dp[j]收敛到dp[j]了，所以下次检查dp[j]+1）</p>
<p>*/</p>
<p><br><br>CF57D<br>/*<br>&nbsp;题意：n,m的网格，有一些static particles，规定任意两个不能在同一行、列，不能在相邻的对角线<br>&nbsp; A dynamic particle选择非static的cell作为起点和终点，然后从起点选择最短路径走到终点（不经过<br>&nbsp; static particles）。问平均路长</p>
<p>&nbsp; 参见解题报告：<a href="http://www.codeforces.com/blog/entry/1171">http://www.codeforces.com/blog/entry/1171</a><br>&nbsp;题目的那种规定，发现，对于同一行、列，如果要跨过那个'X'，就需要多加2<br>&nbsp;而对于连续行的'X'，如下图：<br>&nbsp;1..X.....<br>&nbsp;2....X...<br>&nbsp;3......X.<br>&nbsp;1的左边到1、2、3的右边需要多加2<br>&nbsp;2的左边到2、3的右边也需要多加2<br>&nbsp;...<br>&nbsp;另外，对于下图：<br>&nbsp;1..X.....&nbsp;<br>&nbsp;2......X.<br>&nbsp;3....X...<br>&nbsp;1的左边到2的右边需多加2，而到3的右边不需加<br>&nbsp;2的右边到3的左边需多加2<br>&nbsp;所以，从上往下，对于连续的行，寻找递增或递减的一块，然后对于这一连续的块，统计从左边到右边<br>&nbsp;或右边到左边需要多加的步数2<br>&nbsp;<br>&nbsp;解题报告的框架，两两点距离之和（包括'X'）- 'X'到所有点距离和*2 + 'X'到'X'距离和*2<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里多减了2倍'X'到'X'的，所以要加上<br>&nbsp; 最后，再加上因为'X'存在要绕路需要多加的距离<br>*/<br><br><br>CF 58D<br>/*<br>&nbsp;题意：n个单词（lowercase），先要分成n/2行，每行2个单词，两个单词用分隔符d隔开<br>&nbsp;要使得所有行串起来字典序最小，问如何安排每两行的单词<br>&nbsp;<br>&nbsp;分隔符d可以&lt;'a' , &gt; 'z'<br>&nbsp;若已知第一个单词，那么要使字典序最小，第2个单词肯定是长度为avg-lena中字典序最小的单词<br>&nbsp;avg是每一行两个单词的长度和<br>&nbsp;<br>&nbsp;可以先按照 单词+d 来排序，然后按从小到大安排<br>&nbsp;每个排在前面的单词，然后加上长度为avg-lena中字典序最小的单词<br>*/<br><br><br>SRM 496 PalindromfulString 容斥写法&nbsp; ★★★★ <br>/*<br>&nbsp;问长度为N的字符串(uppercase)中，至少有K个长度为M的回文串的个数<br>&nbsp;N&lt;=11 </p>
<p>&nbsp;一开始我在那里dp推，发现有重复之类的东西不好搞<br>&nbsp;看了Sevenkplus的，容斥，感觉好神奇<br>&nbsp;<br>&nbsp;最多有P = N - M + 1个回文串<br>&nbsp;由于规模比较小，枚举选出哪几个作为回文串，使得至少有K个，令这个模式为Ti<br>&nbsp;（如N = 3, M= 2 , K = 1 ，一个合法的模式为 010）<br>&nbsp;则答案为|T0&#8746;T1...&#8746;Tc|，这里就要用到容斥了<br>&nbsp;= ∑|Ti|<br>&nbsp;&nbsp; -∑|Ti&#8745;Tj|<br>&nbsp;&nbsp; +∑|Ti&#8745;Tj&#8745;Tk|<br>&nbsp;&nbsp; ...<br>&nbsp;&nbsp;&nbsp;&nbsp; 直接套用的话复杂度为2^(2^P) ！！</p>
<p>&nbsp; 与平常的容斥有点不一样，这里存在很多&#8220;Tj包含于Ti&#8221;，即其交集就是子集了<br>&nbsp; 如011包含于010<br>&nbsp; 因为满足011的肯定满足010，所以011是010的子集，这里注意了！！二进制枚举Ti的超集Tj，是模式Ti的子集</p>
<p>&nbsp; 画个韦恩图，一个集合Tj要计算的次数就是先减去其余集合Ti在这部分算的次数（减完就为空了），再加上1<br>&nbsp; 即为 <span style="BACKGROUND-COLOR: yellow">1 - 其余集合Ti在这部分算的次数<br></span>&nbsp;用num[i]表示集合Ti需要算的次数，则num[i] = 1 - ∑num[ii]&nbsp; ii为i的超集<br>&nbsp;for(int j = i+1 ; j &lt; (1&lt;&lt;P) ; j++)<br>&nbsp;{<br>&nbsp;&nbsp;if((j &amp; i) == i)//j是i的子集<br>&nbsp;&nbsp;&nbsp;num[j] -= num[i];<br>&nbsp;}<br>&nbsp;所以集合Ti对答案的贡献为 ans += num[i]*26^cnt<br>&nbsp;O((2^p)^2)<br>&nbsp;cnt为集合Ti独立变量的个数<br>&nbsp;对Ti,求独立变量的个数，可以先建图（利用回文串两端相等的性质），然后dfs算出连通块的个数就是独立变量的个数了<br>*/<br><br><br>TCO'10 Qualification Round 1A 1000pt MegadiamondHunt <br>/*<br>&nbsp;将只含有'&lt;','&gt;'的串，每次去掉&lt;..&lt;&gt;..&gt;连着的几个<br>&nbsp;如果去掉中有n对，则得分为n^2<br>&nbsp;求最大得分<br>&nbsp;<br>&nbsp;一开始以为去掉的顺序没关系，过不了最后一个sample<br>&nbsp;看了LayCurse的代码，它是每次选择 <span style="BACKGROUND-COLOR: yellow">极大的&lt;..&lt;&gt;..&gt;中最小的一个去掉<br></span>&nbsp;这样子去贪心...<br>&nbsp;如 &lt;&lt;&lt;&gt;&gt;&lt;&gt;&gt;<br>&nbsp;如果先去掉&lt;&lt;&gt;&gt;，然后剩下&lt;&lt;&gt;&gt; 得分为 2^2+2^2<br>&nbsp;但若先去掉&lt;&gt;，则剩下&lt;&lt;&lt;&gt;&gt;&gt; 得分为 1 + 3^2<br>&nbsp;因为，考虑一个极大的&lt;..&lt;&gt;..&gt;,若它能扩大，则它的左右肯定先去掉了一个<br>&nbsp;极大的&lt;..&lt;&gt;..&gt;，如果已去掉的那个比当前的大，得分是不会比先去掉当前<br>&nbsp;这个较小的大，所以每次选极大中的最小那个去掉<br>*/</p>
<p><br>zoj 3458<br>/*<br>&nbsp;0 &lt; b - a &lt; 1 + 2sqrt(a)&nbsp; 求 floor(sqrt(a)+sqrt(b))^n % 2(a+b)</p>
<p>&nbsp;看watashi的，没接触过这种问题，做法挺神奇( ⊙ o ⊙ )！</p>
<p>&nbsp;由 0 &lt; b - a &lt; 1 + 2sqrt(a) <br>&nbsp;&nbsp;=&gt; 0 &lt; sqrt(b) - sqrt(a) &lt; 1<br>&nbsp;令Xn = (sqrt(b)+sqrt(a))^2n = (b+a+2sqrt(ab))^n<br>&nbsp;&nbsp;&nbsp; Yn = (sqrt(b)-sqrt(a))^2n = (b+a-2sqrt(ab))^n<br>&nbsp;&nbsp;&nbsp; Zn = Xn +Yn = (b+a+2sqrt(ab))^n + (b+a-2sqrt(ab))^n<br>&nbsp;<br>&nbsp;由于X1 = b+a+2sqrt(ab) , Y1 = b+a-2sqrt(ab)<br>&nbsp;是方程(U-X1)(U-Y1) = 0 ，即 U^2 - 2(a+b)U + (a-b)^2 = 0 的根<br>&nbsp;则<span style="BACKGROUND-COLOR: yellow">Zn+2 = 2(a+b)Zn+1 - (a-b)^2Zn</span><br>&nbsp;用矩阵乘法可以求得Zn<br>&nbsp;<span style="BACKGROUND-COLOR: yellow">由于Yn&lt;1 ，所以floor(Xn) = Zn - 1</span>，所以最后答案Zn-1即可</p>
<p>&nbsp;以上方法有个地方<br>&nbsp;&#8220;<br>&nbsp;由于X1 = b+a+2sqrt(ab) , Y1 = b+a-2sqrt(ab)<br>&nbsp;是方程(U-X1)(U-Y1) = 0 ，即 U^2 - 2(a+b)U + (a-b)^2 = 0 的根<br>&nbsp;则Zn+2 = 2(a+b)Zn+1 - (a-b)^2Zn<br>&nbsp;&#8221;<br>&nbsp;我不太懂，查了下特征根的一点东西<br>&nbsp;若An+2 = pAn+1 +qAn<br>&nbsp;则An = C1&#945;^n + C2&#946;^n<br>&nbsp;上面应该是逆过来<br>&nbsp;由Zn = Xn +Yn = (b+a+2sqrt(ab))^n + (b+a-2sqrt(ab))^n<br>&nbsp;推出Zn+2 = 2(a+b)Zn+1 - (a-b)^2Zn<br>*/<br><br><br>zoj 3461<br>/*<br>&nbsp;给出一个无向图，有边权，点权。点权val[i]为正的表示要将val[i]分出给点权为负的，每个点可以作为中间节点<br>&nbsp;点权val[i]为负的表示要接收val[i]，传送的花费为路径的距离，求最小距离<br>&nbsp;n&lt;=16</p>
<p>&nbsp;按照题意，花费即为∑val[i] = 0 的树的MST&nbsp;<br>&nbsp;我有想过需要划分成几部分，起初没想过怎么划分</p>
<p>&nbsp;解题报告是<span style="BACKGROUND-COLOR: yellow">枚举子集作为一部分树</span>，dp求解（n那么小，要往集合方面想吧！）<br>&nbsp;即dp[mask] = dp[mask^i] + mst[i];<br>&nbsp;注意需要sum[mask] = 0 的才有意义<br>*/<br><br><br>zoj 3463<br>/*<br>&nbsp;一只手，相对拇指不动，至少要占5个键的位置，至多可以弹到9个键。<br>&nbsp;拇指移动距离x需要花费floor(sqrt(x))，已知左右手初始位置和接下来<br>&nbsp;需要弹奏的1000个键，求最小花费。</p>
<p>&nbsp;状态比较明显，dp[n,l,r]表示已经弹了n个音符，左、右手拇指分别在l,r<br>&nbsp;的最小代价<br>&nbsp;无效状态很多，不能计算，否则会超时<br>&nbsp;枚举左右手到需要弹的位置，其他情况不用考虑，不会更优</p>
<p>&nbsp;这句话不太懂："But, one finger touching the key between two fingers of the other hand is fobidden."<br>&nbsp;貌似不用处理？<br>&nbsp;<br>&nbsp;看watashi的代码的<br>&nbsp;sqrt的初始化很漂亮</p>
<p>&nbsp;hdu 3651是简化版，<span style="BACKGROUND-COLOR: yellow">都是无效状态不用算，决策是直接到需要的位置</span><br>*/<br><br><br>zoj 3464<br>/*<br>&nbsp;N个人，起初在一条线上。<br>&nbsp;每个人有速度vi，且每个人最多只能跑带着棒Ts，问最快时间接棒跑完L</p>
<p>&nbsp;贪心，最快的人跑最后Ts，倒数第二快的跑倒数第二Ts...<br>*/<br><br><br><br>TCO'10 Wildcard Round 500pt CalculationCards<br>/*<br>&nbsp;n&lt;=50张卡 如3张：+1 ,-2 , *3&nbsp; 其排列有<br>&nbsp;0 + 1 - 2 * 3 = -5<br>&nbsp;0 + 1 * 3 - 2 = 1<br>&nbsp;0 - 2 + 1 * 3 = 1<br>&nbsp;0 - 2 * 3 + 1 = -5<br>&nbsp;0 * 3 + 1 - 2 = -1<br>&nbsp;0 * 3 - 2 + 1 = -1<br>&nbsp;期望为-1.6666666666666667<br>&nbsp;求给定的n张卡的期望值</p>
<p>&nbsp;看解题报告<a href="http://www.topcoder.com/wiki/display/tc/TCO'10+Wildcard+Round">http://www.topcoder.com/wiki/display/tc/TCO'10+Wildcard+Round</a><br>&nbsp;以及bmerry代码的</p>
<p>&nbsp;不可能n!的枚举<br>&nbsp;设+、-卡共有s张<br>&nbsp;按照一个+、-卡后接连续的*卡分类，则有s部分，其全排列不影响期望（总共s!种，但期望都一样）<br>&nbsp;所以只考虑无序的（无序可以用默认的一种顺序，即卡出现的先后顺序，或者说编号）<br>&nbsp;***a1***a2*** ... as***<br>&nbsp;***表示*卡<br>&nbsp;由于是等概率的，所以总体来统计，每个+、-卡都会接同样的*卡，<br>&nbsp;既然每张+、-卡情况一样，那就考虑a1卡<br>&nbsp;其后会接0,1...,m张*卡<br>&nbsp;答案就是 sum * (0,1,...m)张*卡的期望&nbsp;&nbsp; sum = ∑ai <br>&nbsp;求k张*卡的期望可以用dp做<br>&nbsp;看bmerry代码的做法，解题报告的麻烦一点吧<br>&nbsp;一开始只有s张a卡排着，然后插入一张张*卡<br>&nbsp;dp[i,j]表示插入了前面i张*卡，a1后接j张*卡，它们构成的期望值<br>&nbsp;分第i张卡插不插入到a1之后构成j张连续的*卡，概率为 该插入的位置/总位置<br>&nbsp;dp[i,j] = <br>&nbsp;&nbsp;&nbsp;&nbsp;dp[i-1,j] * (n-j-1)/n<br>&nbsp;&nbsp;&nbsp;+ m[i]*dp[i-1,j-1] * j/n<br>&nbsp;n为s+i</p>
<p>&nbsp;这道题一个很好的想法就是答案为sum * (0,1,...m)张*卡的期望&nbsp;&nbsp; sum = ∑ai&nbsp;&nbsp; ！！！！！！<br>&nbsp;而求后接k张*卡的期望，bmerry的做法是一张一张卡插入，然后求得期望<br><span style="BACKGROUND-COLOR: yellow">&nbsp;小规模到大规模，通过考虑插入位置来实现，这个做法应该较好</span><br>*/<br><br><br>TCO 2010 Qualification Round 1 250pt<br>/*<br>&nbsp;题意：一个只有B,G组成的串，要将他们swap相邻的，变成BB...GG或GG...BB<br>&nbsp;求最少的次数&nbsp; 串长&lt;=50<br>&nbsp;我用n^2的求逆序对，太慢了<br>&nbsp;看了别人的，直接就是累计将每个字母B移到左边的步数<br>&nbsp;if(row[i] == 'B')<br>&nbsp;{<br>&nbsp;&nbsp;tot += i - x;<br>&nbsp;&nbsp;x ++;<br>&nbsp;}<br>&nbsp;x是当前需要放B的位置，交换后就++移到下个位置<br>*/<br><br><br><br>TCO'10 Qualification Round 2 1000pt HandlesSpelling<br>/*<br>&nbsp;给出一个文本串，一些模式串<br>&nbsp;现要将模式串覆盖文本串，不能有重叠部分<br>&nbsp;求使得A^2 - B 最大<br>&nbsp;A是最长覆盖的长度，B是还未覆盖的个数</p>
<p>&nbsp;一开始一直关注A^2 - B ，不知怎么做<br>&nbsp;解题报告是分开来做<br>&nbsp;要求得A^2 - B的最大值，可以通过枚举A<br>&nbsp;枚举某一段作为最大覆盖值，然后看其左右未覆盖的个数</p>
<p>&nbsp;而计算为覆盖的个数可以通过dp了<br>&nbsp;dp[i,j]表示[i,j]为覆盖的个数<br>&nbsp;枚举[i,i']一段是被覆盖的，则答案就是min(dp[i'+1,j])<br>&nbsp;注意的是，初始化有些dp[i,j]=0，就直接continue<br>*/<br><br><br>SRM 216 Refactoring<br>/*<br>&nbsp;问一个数n&lt;=2*10^9 可以拆分成多少种因子相乘的情况<br>&nbsp;24 = 2*2*2*3<br>&nbsp;&nbsp; = 2*2*6<br>&nbsp;&nbsp; = 2*3*4<br>&nbsp;&nbsp; = 2*12<br>&nbsp;&nbsp; = 3*8<br>&nbsp;&nbsp; = 4*6<br>&nbsp;<br>&nbsp;不需要高深的数学知识！！！<br>&nbsp;暴力dfs做<br>&nbsp;f(n) = 1 + ∑f(n/i)&nbsp; <br>&nbsp;i 为其因子,i &gt; 1 &amp;&amp; i &lt;= n/i（保证不会进入多余的分支）<br>&nbsp;为了保证无序，可以多加一个参数start，表示该轮的因子&gt;=start<br>*/<br><br><br><br>SRM 223 PrimeAnagrams<br>/*<br>&nbsp;给出一个数字串len&lt;=8<br>&nbsp;求将其分为三部分，每部分都是素数，且乘积最小</p>
<p>&nbsp;看解题报告的<br>&nbsp;8! = 40320 ，而分成3部分情况为C(7,2) = 21种<br>&nbsp;所以枚举全排列，然后分成3部分来做</p>
<p>&nbsp;Brute Force ！！！！！！<br>*/<br><br><br>zoj 3471 mask dp<br>/*<br>&nbsp;n&lt;=10个球，i碰j会产生a[i,j]的能量，j同时会消失<br>&nbsp;问最多产生的能量之和<br>&nbsp;<br>&nbsp;我知道跟mask有关，为啥还是想不出？<br>&nbsp;<br>&nbsp;要从整体来看！！<br>&nbsp;现在有一些球，掩码为mask<br>&nbsp;假设最先碰撞的是u-&gt;v，然后v消失了<br>&nbsp;局面就变成了没有v的一些球了, mask^(1&lt;&lt;v)，一个子问题了<br>&nbsp;所以转移就是枚举u,v<br>&nbsp;dp[mask] = max(dp[mask^(1&lt;&lt;v)+a[u][v])&nbsp;</p>
<p><span style="BACKGROUND-COLOR: yellow">&nbsp;从局面来看吧！！！</span></p>
<p>&nbsp;一开始我是像zoj 3461 dp[mask] = dp[mask^i] + mst[i];<br>&nbsp;发现会出问题，<span style="BACKGROUND-COLOR: yellow">这样子是隔离了一部分</span>，但显然隔离了后会丢失了连接着两部分的那个值<br>&nbsp;<br>*/</p>
<p>&nbsp;</p>
<p><br><br>zoj 3470<br>/*<br>&nbsp;如图，问某个数字上下左右的数字是多少<br>&nbsp;既然题目给了一副对应的坐标，发现，问题的重点就在于点坐标跟数字的转换<br>&nbsp;<br>&nbsp;我是先找出数字val在第n圈 即 (n-1)^2 &lt; val &lt;= n^2<br>&nbsp;然后该圈的起点start就是(n-1)^2 + 1 ， 然后通过比较start，就能求出坐标了<br>&nbsp;发现奇数圈会使minx--,miny-- ; 偶数圈会使maxx++,maxy++<br>&nbsp;数量关系是minx = miny = -(n-1)/2 , maxx = maxy = n/2<br>&nbsp;<br>&nbsp;然后点(x,y)转化为值，跟上面类似的<br>&nbsp;求出第n圈&nbsp; 二分判断 minx&lt;=x&lt;=maxx , miny&lt;=y&lt;=maxy<br>&nbsp;然后求出角落的点等等...<br>*/ <br><br><br>zoj 3468<br>/*<br>&nbsp;Dice游戏，一开始Attacker Defender各有骰子n,m个<br>&nbsp;双方拿出一定骰子来投，累计和<br>&nbsp;谁多点谁赢<br>&nbsp;Attacker拿出至少1个来攻击<br>&nbsp;问Attacker一次攻击赢的概率<br>&nbsp;骰子数目&lt;=8<br>&nbsp;枚举Attacker投出的和为j，然后计算达到j的方法数，以及Defender投出的和小于j的方法数<br>&nbsp;<br>&nbsp;用背包的方法计算方法数<br>*/ <br><br>CF 60D<br>/*<br>&nbsp;n&lt;=10^6个点，每个点有权值a[i]&lt;=10^7 各不相同<br>&nbsp;若存在一个数x，使得a[i],a[j],x&nbsp;&nbsp; is a beautiful triple<br>&nbsp;即a^2 + b^2 = c^2&nbsp;&nbsp; a,b,c互素<br>&nbsp;则i可以传播laugh到j<br>&nbsp;问最少需要需要让多少个顶点自行laugh，然后传播到全部的顶点</p>
<p>&nbsp;看了解题报告的<br>&nbsp;并查集做<br>&nbsp;但如何判断beautiful triple 两两判断O(n^2)会超时</p>
<p>&nbsp;有个性质：对于满足a^2 + b^2 = c^2的数，可用勾股数公式生成：<br>&nbsp;(x^2-y^2 , 2xy , x^2+y^2)&nbsp; x&gt;y<br>&nbsp;该公式能生成所有的素勾股数（互质），需1奇1偶 ，且gcd(x,y) = 1<br>&nbsp;也能生出部分派生勾股数(如 6 8 10) ， 2奇或2偶<br>&nbsp;<br>&nbsp;由于a[i]&lt;=MAX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MAX= 10^7<br>&nbsp;所以必有x^2-y^2 &lt;= MAX , 2xy &lt;= MAX&nbsp; 但x^2+y^2不一定&lt;= MAX<br>&nbsp;2y^2&lt;=MAX<br>&nbsp;x^2&lt;=MAX+y^2&lt;=3MAX/2<br>&nbsp;=&gt; x&lt;=sqrt(3MAX/2) , y &lt;= sqrt(MAX/2)<br>&nbsp;所以枚举x,y复杂度为O(MAX)<br>&nbsp;(注意x,y是1奇1偶且gcd(x,y) = 1)</p>
<p>&nbsp;参考watashi代码写的&nbsp;<br>*/<br><br><br>CF60E<br>/*<br>&nbsp;一开始 n &lt;= 10^6 个 Mushroom 按升序排成一条直线 ， 每个Mushroom重为a[i]<br>&nbsp;下一秒时，a[i] , a[i+1] 之间会出现一个a[i]+a[i+1]的Mushroom<br>&nbsp;而x秒时，某人重新排序这些Mushroom<br>&nbsp;问再经过y秒，所有Mushroom的重量之和</p>
<p>&nbsp;0 a1&nbsp; a2&nbsp; a3<br>&nbsp;1 a1&nbsp; a1+a2&nbsp; a2&nbsp; a2+a3&nbsp; a3<br>&nbsp;2 a1&nbsp; 2a1+a2&nbsp; a1+a2&nbsp; a1+2a2&nbsp; a2&nbsp; 2a2+a3&nbsp; a2+a3&nbsp; a2+2a3&nbsp; a3<br>&nbsp;3 ...<br>&nbsp;设时间i时重量为Ti 则Ti = 3Ti-1 - (a1+an)<br>&nbsp;所以前x可用矩阵乘法求出Tx<br>&nbsp;然后由于sort，最大的值是Fx-1*an-1 + Fx*an （找规律 Fx-1*ai-1 + Fx*ai , Fx*ai-1 + Fx-1*ai）<br>&nbsp;F是斐波那契数列&nbsp; F[-1] = 0 , F[0] = 1<br>&nbsp;然后修改a1+an值即可，再次矩阵乘法 算出后来的y秒<br>*/<br><br><br>noip2002 G2 字串变换 双向BFS<br>/*<br>&nbsp;给出A,B串<br>&nbsp;以及一些变化方法，即x-&gt;y<br>&nbsp;求A变到B的最短步数<br>&nbsp;<br>&nbsp;bfs慢点<br>&nbsp;双向会快点<br>&nbsp;由于x-&gt;y是单向的，所以两边的结构不同，<span style="BACKGROUND-COLOR: yellow">优先扩展队列长度短的优化就有用了<br>&nbsp;注意反向BFS时扩展的顺序是y-&gt;x<br></span>*/<br><br>poj 2411<br>/*<br>&nbsp;问n*m的棋盘放置1*2的骨牌的方案数<br>&nbsp;n,m&lt;=11<br>&nbsp;<br>&nbsp;枚举行，递推计算列<br>&nbsp;dp[row,col,s]&nbsp; row行之前已经放好,且当前row行处于s状态 <br>&nbsp;递推 通过在row行，col列之后放置，扩展计算<br>&nbsp;dp[row,col,s1] += dp[row-1,col,s2]</p>
<p>&nbsp;不是记忆化搜索 是从0递推<br>&nbsp;为了打表，在每个分支都计算了&nbsp; 即:dp[row][col][s1] += dp[row-1][col][s2];<br>&nbsp;否则，可以在最后的时候才计算的<br>*/<br><br>sgu 131<br>/*<br>&nbsp;n*m棋盘，问用1*2, 2*2去掉一个角的骨牌覆盖完的方案数<br>&nbsp;<br>&nbsp;状态定义为 dp[row,s]表示当前第row行状态为s，且前row-1行已经覆盖完的方案数<br>&nbsp;则 dp[row,s] &lt;-- dp[row-1,s']<br>&nbsp;转移是枚举row这一行每个位置（注意是整行）怎么放<br>&nbsp;同时，若枚举了row怎么放，则由状态的定义，row-1之前的必须覆盖完，就知道了s'是什么了！！！<br>&nbsp;<br>&nbsp;每个位置有7种放法，除了被之前的方法限制了，就不足<br>*/<br><br><br>hdu 2640<br>/*<br>&nbsp;n*m的棋盘，有一些位置不能放，问最多能放多少个十字架<br>&nbsp;&nbsp;&nbsp; @<br>&nbsp;@@@<br>&nbsp;&nbsp;&nbsp; @</p>
<p>&nbsp;注意的是，每个@都需要放，所以棋盘相应的位置需要是空的<br>*/<br><br><br>xmu 1118<br>/*<br>&nbsp;求用1*1,1*2,1*3的砖块铺满 3*N的板的方案数目<br>&nbsp;1*3，最多影响3行 所以状态需要记录当前行以及前一行的情况&nbsp; 2bit 共4种<br>&nbsp;_&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp; _&nbsp;&nbsp;&nbsp; *<br>&nbsp;_&nbsp;&nbsp;&nbsp; _&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp; *<br>&nbsp;_表示空，*表示被覆盖</p>
<p>&nbsp;dp[row,s]表示row-1之前的已经覆盖完了，row-1,row的状态为s时的值<br>&nbsp;<br>&nbsp;对row这一行的每个位置，枚举其放的方法<br>&nbsp;虽然说4种状态，<span style="BACKGROUND-COLOR: yellow">实际上转移时很多是不需要的。因为为了满足row-1之前的是覆盖完的<br><br><span style="BACKGROUND-COLOR: #ffffff">不放，可以转移两种，即上面的1,2种类型</span><br></span>*/<br><br><br><br>hdu 2240<br>/*<br>&nbsp;给出如图n*5棋盘，其中第一块最多只能用c个，其余的不限<br>&nbsp;问能否铺满<br>&nbsp;跟sgu 131类似<br><span style="BACKGROUND-COLOR: #ffff00">&nbsp;不过这里dp的值是记录最少使用的1</span><br>&nbsp;b1,b2是之前的方法对当前的影响<br>*/<br><br><br><br>hdu 2606<br>/*<br>&nbsp;用1*1, 2*2, 3*3, 4*4覆盖完N*4的棋盘的方案总数<br>&nbsp;递推<br>&nbsp;dp[n] =&nbsp; dp[n-1]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最底部放4个1*1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + 4*dp[n-2]&nbsp;&nbsp;&nbsp;&nbsp; 最底部组合出2*4的，总共有4种<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + 4*dp[n-3]&nbsp;&nbsp;&nbsp;&nbsp; 最底部组合出3*4的，总共有4种&nbsp; 2个是2块2*2上下交错 2个是一块3*3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + 3*dp[n-4]&nbsp;&nbsp;&nbsp;&nbsp; 最底部组合出4*4的，总共有3种&nbsp; 2个是3块2*2上下交错 1个是一块4*4<br>&nbsp;&nbsp;&nbsp; + 2*(dp[n-5]+dp[n-6]...+dp[0])&nbsp;&nbsp;&nbsp; 用2*2上下交错放的<br>&nbsp;则dp[n-1] = ....<br>&nbsp;两式相减，得到dp[n] = 2dp[n-1] +3dp[n-2] - dp[n-4] - dp[n-5]&nbsp;&nbsp;&nbsp; n&gt;=5<br>&nbsp;至于n&lt;=4的，结合上面的dp[n]的式子计算</p>
<p>&nbsp;脑残了，wa了好几次<br>&nbsp;没想到可以<span style="BACKGROUND-COLOR: yellow">2*2上下交错</span>&nbsp; 脑残<br>*/<br><br><br><br>hnu 10816 ugly number<br>/*<br>&nbsp;题意：给出n个素数&lt;=10000&nbsp; n&lt;=10<br>&nbsp;问[x,y]区间内只包含这些素数因子的数，要求全部打印出来<br>&nbsp;x,y&lt;=2^31<br>&nbsp;一开始看到规模吓了一跳<br>&nbsp;事实上，只含有这些因子的数是很少的<br>&nbsp;注意不是倍数！！之前第一印象看成倍数，搞个容斥了，算了下2和3的，数据巨大....<br>&nbsp;<br>&nbsp;像poj 的 ugly number那样子做<br>&nbsp;由于每个数都得乘以这些素数来扩展<br>&nbsp;用num[]数组存储生成的所有数<br>&nbsp;pos[i]表示素数pr[i]当前要乘以num[pos[i]]<br>&nbsp;初始num[0] = 1&nbsp; pos[i] = 0<br>&nbsp;然后<span style="BACKGROUND-COLOR: yellow">每一步扩展一个数</span>，该数为num[tot] = <span style="BACKGROUND-COLOR: yellow">min(num[pos[i]]*pr[i])<br></span>&nbsp;然后<span style="BACKGROUND-COLOR: yellow">判断每个</span>num[pos[i]]*pr[i] 是否 = num[tot]，<span style="BACKGROUND-COLOR: yellow">是的话 pos[i]+1</span><br>&nbsp;<br>&nbsp;这种思想还是没能很好掌握...<br>&nbsp;肯定的是，每个数都得乘以pr[1],pr[2]...<br>&nbsp;要用pos[i]记录当前pr[i]乘到哪个数了！！！<br>*/<br><br><br><br>08 ZhuHai Contest&nbsp; E Magic Squares 双向bf<br>/*<br>&nbsp;问一个排列变为3*3幻方的最小步数<br>&nbsp;每一步可以选择一个角进行旋转<br>&nbsp;<br>&nbsp;状态数不多9! <br>&nbsp;先全排列得到目标状态<br>&nbsp;再双向bfs&nbsp; 挺快的<br>&nbsp;用康托展开（变进制）判重更快<br>*/<br><br><br>poj 3255 无向图值次短路 ★★★<br>/*<br>&nbsp;给出一个无向图 n&lt;=5000, m &lt;= 30000<br>&nbsp;求1到n的值次短的路，如果有多条最短路，但次短的还是需要大于最短的<br>&nbsp;允许点、边走多次</p>
<p>&nbsp;靠解题报告保养~~~ T_T<br>&nbsp;求1到其他点的最短路dist[] ，再求n到其他点的最短路rdist[]<br>&nbsp;<span style="BACKGROUND-COLOR: yellow">枚举每条边，找到次短的 dist[u] + (u,v) + rdist[v]</span></p>
<p>&nbsp;启示:&nbsp; 枚举哪条边作为中间的必须经过的边u-&gt;v，然后连接1-&gt;u, v-&gt;n<br>*/<br><br><br>scu 3904<br>/*<br>&nbsp;一个序列seq[i]&nbsp;&nbsp; n&lt;=10^5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -10000&lt;=seq[i]&lt;=10000<br>&nbsp;将其划分成几部分，使得每一部分之和&gt;=0<br>&nbsp;求所有的划分方法数<br>&nbsp;显然dp[i] = ∑dp[j]&nbsp;&nbsp; (sum[i] - sum[j] &gt;= 0)<br>&nbsp;O(n^2)会超时<br>&nbsp;用线段树加速<br>&nbsp;我一开始是以下标作为线段树的数轴，记录该段Min[p],Max[p],还有一个sDp[p]记录该段所有dp值<br>&nbsp;但这样比较慢，维护相对多了点</p>
<p>&nbsp;看了标程，是先计算所有的sum[]，然后离散化<br>&nbsp;以sum值作为数轴来搞，用树状数组就很容易写了</p>
<p>*/<br><br><br>中大第三本 ch2 负权数<br>/*<br>&nbsp;平时 N = anR^n + ... + a0R^0&nbsp;&nbsp;其中R&gt;0<br>&nbsp;负权数是R &lt; 0,使用负权数表示的优点是对于负数，不用前置的符号<br>&nbsp;比如 -15 = 1*(-2)^5 + 1*(-2)^4 + 0*(-2)^3 + 0*(-2)^2 + 0*(-2)^1 + 1*(-2)^0<br>&nbsp;现给出N,&nbsp; -16&lt;= R &lt;=-2<br>&nbsp;求N的负权数R表示（题目的答案输出一行，表明表示是唯一的）<br>&nbsp;(无论正权、负权，系数ai都是 0&lt;=ai&lt;|R|)<br>&nbsp;<br>&nbsp;因为取余运算只使用语正整数除法，所以不能通过连续连除求余的方法！！！！<br>&nbsp;写成普通形式时：</p>
<p>&nbsp;N &gt;= 0<br>&nbsp;N = an|R|^n + ... + a0|R|^0&nbsp;R &lt; 0<br>&nbsp;i为奇数时:<br><span style="BACKGROUND-COLOR: yellow">&nbsp;&nbsp;ai|R|i = R(i+1) + (|R|-ai)Ri&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了保证a'&gt;=0</span><br>&nbsp;i为偶数<br>&nbsp;&nbsp;ai|R|i = aiRi<br>&nbsp;所以先将N写成正权形式，然后再修改为负权的</p>
<p>&nbsp;同理<br>&nbsp;N &lt; 0<br>&nbsp;N = -(an|R|^n + ... + a0|R|^0)&nbsp;R &lt; 0<br>&nbsp;i为奇数时:<br>&nbsp;&nbsp; -ai|R|i = aiRi&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了保证a'&gt;=0<br>&nbsp;i为偶数<br>&nbsp;&nbsp;-ai|R|i = R(i+1) + (|R|-ai)Ri</p>
<p>&nbsp;最后对a'[]进行修正，使得0 &lt;= a'i &lt; |R|</p>
<p><br>&nbsp;感觉挺不错的一道题，<span style="BACKGROUND-COLOR: yellow">通过对正权的形式，修正为负权的</span><br>*/</p>
<img src ="http://www.cppblog.com/Yuan/aggbug/138035.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2011-01-05 20:12 <a href="http://www.cppblog.com/Yuan/archive/2011/01/05/138035.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>做题记录...</title><link>http://www.cppblog.com/Yuan/archive/2010/08/09/122760.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Mon, 09 Aug 2010 04:28:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2010/08/09/122760.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/122760.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2010/08/09/122760.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/122760.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/122760.html</trackback:ping><description><![CDATA[<p><strong><br><br>8.9<br></strong><br><br>POJ 3189 枚举 多重匹配<br>/*<br>&nbsp;题意：N头cow，B个barn 每个barn有容量ci，给出每头cow对这些barn喜爱程度排序的列表<br>&nbsp;问如何安排，使所有的牛之间的满意度的最大差最小<br>&nbsp;题意比较绕口<br>&nbsp;设最满意程度为u，最不满意程度为v&nbsp; 则答案就是u-v了<br>&nbsp;可以直接O(B^2)枚举[v,u] <br>&nbsp;更快的做法是，<span style="BACKGROUND-COLOR: yellow">如果[v,u]可行，则[v,u+k]肯定可行</span>！<br>&nbsp;根据这个，用两个指针，如果可行，left++；不行right++<br>&nbsp;然后用匈牙利多重匹配做即可<br>&nbsp;这种用<span style="BACKGROUND-COLOR: yellow">两个指针枚举</span>的方法有通用性<br>*/<br><br><br><br><a id=viewpost1_TitleUrl class=postTitle2 href="http://www.cppblog.com/Yuan/archive/2010/08/09/122849.html"><font color=#646464>URAL 1699 ★★★ 建立LCA 细节处理好</font></a> <br>/*<br>&nbsp;题意：给出一个地图，一些地方可以走<br>&nbsp;The ground is constructed in such a way that there is &nbsp;exactly one way to get from one passable cell to another passable cell without visiting any cell twice.<br>&nbsp;表明是一棵树<br>&nbsp;然后给出Q个询问，问a到b的最少转的次数<br>&nbsp;以'#'建一棵树，预处理LCA<br>&nbsp;然后读入查询，找到LCA&nbsp; 再分情况讨论一下cost[]即可<br>&nbsp;if LCA(a,b)=a&nbsp; da=0<br>&nbsp;else 考虑LCA(a,b)向上有没转 有的话da=dist[a]-dist[LCA(a,b)]-1 要-1</p>
<p>&nbsp;R*C&lt;=100000&nbsp; 递归会爆<br>&nbsp;要用非递归...<br>*/<br><a href="http://www.cppblog.com/Yuan/archive/2010/08/09/122849.html">http://www.cppblog.com/Yuan/archive/2010/08/09/122849.html<br></a><br><br><br>POJ 1149 构图不错<br>/*<br>&nbsp;题意: 给出m个猪圈，n个顾客。每个顾客有一些钥匙开猪圈的，开了后那些猪可重新分配也行<br>&nbsp;&nbsp;&nbsp; 顾客要买Bi头猪&nbsp; 顾客走后门就关了就不能再调整猪了&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 猪圈一开始有一些猪，猪圈可容纳无限的猪<br>&nbsp;&nbsp;&nbsp; 问能卖出去的最大猪的数目</p>
<p>&nbsp;这道题，我一开始做，构图是正确，一个小地方写错了，搞了我半天了！<br>&nbsp;构图如下：<br>&nbsp;S向猪圈连边，容量为猪圈猪的数目<br>&nbsp;顾客向T连边，容量为顾客要买的数目<br>&nbsp;顾客的钥匙对应的猪圈向顾客连边，容量无限<br>&nbsp;如果顾客i跟前面的顾客j有共同的钥匙就能连j-&gt;i，容量无限<br>&nbsp;<br>&nbsp;我这样子构图跟网上的有点不一样，不过核心都是差不多吧&nbsp;<br>&nbsp;&#8220;若第i个人与他后面的第j个人有同一个猪圈的钥匙，则从i引边到j,容量为无穷大&#8221;</p>
<p><br>&nbsp;网上详细构图：<a href="http://imlazy.ycool.com/post.2059102.html">http://imlazy.ycool.com/post.2059102.html</a><br>&nbsp;他这种构图方法更巧，去掉了猪圈了（猪圈数目较大）&nbsp; 不过对我就难想到<br>*/<br><br><br>hdu 2888<br>二维RMQ&nbsp; 用dp[i][j][k1][k2]表示矩形(i,j)&nbsp; (i+(1&lt;&lt;k1)-1,j+(1&lt;&lt;k2)-1)的最值<br><br><br><br><br><br><strong>8.10<br></strong><br><br>hdu 3485&nbsp; <br>求长度为n的不包含101子串串的个数&nbsp; 跟hdu 2604类似<br><img alt=未命名.jpg src="http://bbs.foreverzeus.com/attachments/month_1008/1008102232d3effdf47675bf90.jpg"><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 22px; BORDER-COLLAPSE: collapse; FONT-FAMILY: Verdana, Helvetica, Arial, sans-serif; COLOR: rgb(68,68,68); FONT-SIZE: 14px" class=Apple-style-span>如图，长度为n的合法串，后缀可以是0，001,0011,00111,...<br style="LINE-HEIGHT: normal; WORD-WRAP: break-word">所以dp[n]=dp[n-1]+dp[n-3]+dp[n-4]+...+dp[1]<br style="LINE-HEIGHT: normal; WORD-WRAP: break-word">而dp[n-1]=dp[n-2]+dp[n-4]+...+dp[1]<br style="LINE-HEIGHT: normal; WORD-WRAP: break-word">两式相减，得到dp[n]=2*dp[n-1]-dp[n-2]+dp[n-3]</span></span><br><br><br><br>hdu 3486<br>/*<br>&nbsp;题意：给出n个数，求分成多少段，使得每段的最大值之和&gt;k （末尾不足一段的丢弃）<br>&nbsp;二分分成多少段，直接做即可 O(nlogn)<br>&nbsp;用线段树会更慢，O(nlognlogn)<br>*/<br><br><br>hdu 3482 <br>/*<br>&nbsp;题意:问满足条件的长度为n的串的个数&nbsp; 条件是每个长度为m的子串的数字要么全不同、要么全相同<br>&nbsp;分类讨论<br>&nbsp;m=1&nbsp; 1<br>&nbsp;m=2&nbsp; 2^n<br>&nbsp;m&gt;n (不存在长度为m的子串)&nbsp;&nbsp; m^n<br>&nbsp;m&lt;=n&nbsp; m!+m (其实，确定了前m个后面的都会确定的，所以m!&nbsp; 再加上全相同)<br>*/<br><br><br><br>hdu 3478<br>/*<br>&nbsp;题意：给出一个无向图，一个起点，问是否在某个时候，这个人有可能在所有点都可以出现<br>&nbsp;&nbsp;&nbsp;&nbsp; 人不能停留在原地<br>&nbsp;画一下图就知道，只要存在奇圈，那么奇圈的点就可以任何时刻都出现人<br>&nbsp;同时，对于奇圈外的，奇圈可以源源不断地传到奇圈外<br>&nbsp;这样肯定存在某个时刻，其他点也可以同时出现人（因为源源不断传出来，所以肯定会波及所有）<br>*/<br><a href="http://www.cppblog.com/Yuan/archive/2010/08/11/123005.html">http://www.cppblog.com/Yuan/archive/2010/08/11/123005.html</a><br><br><br><br><br><strong>8.11<br></strong><br>hdu 3516<br>/*<br>&nbsp;题意:给出n个点，如果满足 xi &lt; xj and yi &gt; yj for all i &lt; j&nbsp; 就可以在点(xi,yj)向点i,j连边<br>&nbsp;求把他们连成一棵树的最小代价<br>&nbsp;跟矩阵连乘的加括号一样<br>&nbsp;dp[i][j]=min{dp[i][k]+dp[k+1][j]+(pt[k+1].x-pt[i].x)+(pt[k].y-pt[j].y)}<br>&nbsp;n&lt;1000<br>&nbsp;需要四边形不等式&nbsp; O(n^2)<br>*/<br><br><br>hdu 3512<br>/*<br>&nbsp;&nbsp;&nbsp; 题意：给出上面n个数，下面n个数，求完美匹配的最大边最小。边权定义为两个数相乘。可以负数<br>&nbsp;&nbsp;&nbsp; 应该有点YY的<br>&nbsp;&nbsp;&nbsp; 先分一下情况<br>&nbsp;&nbsp;&nbsp; 同号：大*小&nbsp; 才能使最大那个最小<br>&nbsp;&nbsp;&nbsp; 异号：小*小&nbsp; 才能使最大那个最小<br>&nbsp;&nbsp;&nbsp; 一点贪心的思想<br>&nbsp;&nbsp;&nbsp; 上面的那些正数跟下面的负数匹配<br>&nbsp;&nbsp;&nbsp; 上面的那些负数跟下面的正数匹配<br>&nbsp;&nbsp;&nbsp; 这样剩下来的（当然可以没有剩下），肯定是同号的，而且这些数更接近于0</p>
<p>&nbsp;&nbsp;&nbsp; 现在再来看那些 正数*负数 的情况<br>&nbsp;&nbsp;&nbsp; 刚才提到&#8220;小*小&nbsp; 才能使最大那个最小&#8221;，而且越小的话越好<br>&nbsp;&nbsp;&nbsp; 所以上面那些最大的正数跟下面那些最小的负数匹配（顺序匹配，大-大，小-小）<br>&nbsp;&nbsp;&nbsp; 同理，上面的那些最小的负数跟下面那些最大的正数匹配</p>
<p>&nbsp;&nbsp;&nbsp; 就这样先排序，然后找出各自的0的位置<br>&nbsp;&nbsp;&nbsp; 再分类一下即可<br>*/<br><a href="http://www.cppblog.com/Yuan/archive/2010/08/11/123105.html">http://www.cppblog.com/Yuan/archive/2010/08/11/123105.html</a></p>
<p><br><br><br><br><strong>8.12<br></strong><br>hdu 3481 <br><br>/*<br>&nbsp;题意：问长度为n的bad serial串的个数。bad serial 指每一个长度为m的子串都不是good serial<br>&nbsp;(good serial指要么全相同，要么全不同)，所以bad serial就是两个以上不同，但不能m个都不同</p>
<p>&nbsp;dp[i,j](1&lt;=j&lt;m)表示长度为i的串最后j个数字互不相同的串个数（即str[i-j]与末尾这j个数中一个相同）</p>
<p>&nbsp;考虑dp[i+1,j+1]<br>&nbsp;(1)dp[i+1,j+1]+=dp[i,j]*(m-j)&nbsp;&nbsp; 选一个与i及之前j个数字都不同的<br>&nbsp;(2)dp[i+1,k]+=dp[i,j]&nbsp; 2&lt;=k&lt;=j&nbsp; 选一个与i之前j个数字某个相同的 str[i+1]=str[i+1-k]<br>&nbsp;还有一种特殊的就是dp[i,1]，即末尾几个数字都相同的合法串个数<br>&nbsp;(3)dp[i+k,1]+=dp[i,j]&nbsp; (1+k&lt;=m-1, j&gt;1||i==1)<br>&nbsp;如果j=1的话有可能一连串都相同导致不合法，要j&gt;1<br>&nbsp;特殊的是i=1，j=1就可取，因为1之前没有数字，认为与1不同（跟j&gt;1一样）</p>
<p><br>&nbsp;心得：只考虑最后一个字符（第i+1），考虑怎么合法过来的<br>&nbsp;&nbsp;&nbsp;&nbsp; dp转移时，由之前的转移过来难写的话，写成从当前扩展到之后的！<br>&nbsp;&nbsp;&nbsp;&nbsp; 按照题意定义状态，这里要2个以上不同，定义末尾有j个不同（j=1时是特殊情况，即末尾可以几个连续相同）<br>*/<br><br><br>hdu 3510<br>/*<br>&nbsp;题意：给出n个任务，m台机器&nbsp; 任务间有依赖关系，这些关系构成一棵树&nbsp; 问最短完成时间<br>&nbsp;显然完成时间不能少于最深的深度，而每次只能选叶子被机器加工<br>&nbsp;这样，每次选深度最深的叶子加工（用PQ）直到完成<br>&nbsp;如果不选深度最深的，可能会使时间变长<br>*/<br><br><br><br>hdu 3508<br>/*<br>&nbsp;题意：问n内，与n互质的所有数的乘积模n是多少<br>&nbsp;打了一些数据，发现只有1和n-1<br>&nbsp;当n=1,2,4,p^k,2*p^k时&nbsp; 答案为n-1<br>*/<br><br><br>hdu 3483<br>/*<br>&nbsp;题意：给出N,x,M 要计算<br>&nbsp;N<br>&nbsp;∑(k^x)*(x^k) MOD M<br>&nbsp;k=1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;&nbsp;<br>&nbsp;用到二项式定理，(n+1)^x = ∑C(x,k)n^k&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k=0<br>&nbsp;然后构造矩阵，求和&nbsp; S(n)表示前n项和<br><a href="http://www.cppblog.com/Yuan/archive/2010/08/13/123268.html">http://www.cppblog.com/Yuan/archive/2010/08/13/123268.html</a><br>*/<br><br><br>hdu 3366<br>/*<br>&nbsp;如果已经知道走这些passage的顺序的话，应该可以dp出来的<br>&nbsp;但是这里不确定顺序，要选择最优，可以按照P/Q从大到小排序<br>&nbsp;遇到匪徒几率Q越小，出去几率P越大，肯定是我们优先考虑的！<br>&nbsp;Help Bill to find out the probability that he can escape from this castle if he chose the optimal strategy.</p>
<p>&nbsp;dp[i][j]表示现在有钱j，在i个passage处，最后能够出去的概率<br>&nbsp;dp[n-1,j]=P[n-1]<br>&nbsp;dp[i,j]=P[i]+Q[i]*dp[i+1,j-1]+(1-P[i]-Q[i])*dp[i+1,j]&nbsp;&nbsp; j&gt;0<br>&nbsp;dp[i,j]=P[i]+(1-P[i]-Q[i])*dp[i+1,j]&nbsp;&nbsp; j=0</p>
<p>&nbsp;概率题期望题，一般都是表示现在离目标的值<br>&nbsp;（因为当前接下来的方案确定了，概率也知道了，而当前从前面过来就不确定概率了，其概率跟路径有关）<br>*/</p>
<p><br><br><br><strong>8.13<br><br></strong>zoj 2597<br>/*<br>&nbsp;题意：题目定义一种n位的yellow code&nbsp; 相邻两个数之间要差别至少[n/2]。让你构造出n位的yellow code<br>&nbsp;观察发现，n位可以由n-1位复制一遍，然后最后一列再算一下得来<br>&nbsp;对最后一列的前n个爆搜即可，后n个是前n个取反<br>*/ <br><br>zoj 1619<br>/*<br>&nbsp;题意：n个人n个礼物混乱，问每人取一个，最终m个人取到自己的概率<br>&nbsp;直接用错排公式即可&nbsp; C(n,m)*D[n-m]/n!<br>&nbsp;或者dp<br>&nbsp;dp[i,j]表示前i个人j个取得自己的概率<br>&nbsp;dp[i,j]可以先安置好i-1的，然后再用乘法原理乘起来<br>&nbsp;dp[i,j] = dp[i-1,j]*(i-1-j)/i&nbsp;&nbsp;&nbsp; 先把i-1个人安置出j个人取到自己的情况，为使还是j个人，第i个人需跟剩下的i-1-j个人其中一个交换<br>&nbsp;&nbsp; + dp[i-1,j-1]*1/i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 先把i-1个人安置出j-1个人取到自己的情况，然后第i个人取到自己的概率<br>&nbsp;&nbsp; + dp[i-1,j+1]*(j+1)/i&nbsp; 先把i-1个人安置出j+1个人取到自己的情况，然后第i个人跟这j+1个人之一交换</p>
<p>*/<br><br><br><strong>8.14</strong><br><br>zoj 2703 被这道题卡了好久，还是wa<br><br><strong>8.16<br></strong>做了下伸展树的<br>spoj 4487&nbsp;&nbsp;&nbsp; &nbsp;1470<br><br><br><strong>8.17</strong><br><br>cii 2193<br>/*<br>&nbsp;sample：<br>&nbsp;##-(##+###)<br>&nbsp;3333333<br>&nbsp;用下面的数字去填上面的#使得该式子最大&nbsp; 有多个时输出字典序最小的<br>&nbsp;<br>&nbsp;首先，去括号<br>&nbsp;没有真的去掉，利用括号前的那些正负号来确定每个数字真实的正负号<br>&nbsp;为每个数字或者括号这样的整体添加正负号<br>&nbsp;如下面的例子&nbsp; +(-(+a+b)+c)<br>&nbsp;这里在最外的括号及a也要有一个正号</p>
<p>&nbsp;为了转化出上面的式子用一个栈<br>&nbsp;1) '(' 如果其前面不是符号，就需要添加一个符号（跟栈顶一样） push(top)<br>&nbsp;2) '(' pop<br>&nbsp;3) '&#177;' push(op^top)&nbsp; 这里把负号当成1<br>&nbsp;4) '#' 如果其前面不是符号就需要添加一个符号（跟栈顶一样） push(top)<br>&nbsp;&nbsp;&nbsp; 然后连读... 存起这个数&nbsp; 再pop<br>&nbsp;<br>&nbsp;正数存在positive 负数存在negative</p>
<p>&nbsp;现在就来贪心&nbsp; 先将digit排序<br>&nbsp;对于正数，每次将digit里最大的数赋值给positive里长度最大的，或长度相同靠后的<br>&nbsp;对于负数，每次将digit里最小的数赋值给negative里长度最大的，或长度相同靠前的<br>&nbsp;<br>&nbsp;可用一个堆来实现，取出后再放进去（这时长度少1了）</p>
<p>*/<br></p>
<img src ="http://www.cppblog.com/Yuan/aggbug/122760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2010-08-09 12:28 <a href="http://www.cppblog.com/Yuan/archive/2010/08/09/122760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>There is a tree    树DP </title><link>http://www.cppblog.com/Yuan/archive/2010/08/05/122373.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Thu, 05 Aug 2010 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2010/08/05/122373.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/122373.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2010/08/05/122373.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/122373.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/122373.html</trackback:ping><description><![CDATA[<p><br>&nbsp; </p>
<p><span>今天排位赛，以下的这道树<span>DP</span>想了我好囧！</span></p>
<p><span>一开始乱搞高斯消元。我第二次写高斯消元，还是自己默的。醉<span>~~</span></span></p>
<p><span>然后发现，会出现自由元，为了求得最小值，不得二进制枚举了？但<span>n&lt;=100</span>，我乱搞了一下，给我<span>WA,</span>不给我<span>TLE</span></span></p>
<p><span>错了<span>8</span>、<span>9</span>次吧？心碎，只好用树<span>dp</span>做。（膜拜下林<span>mm</span>秒杀它。<span>...Orz</span>）<br>(后来看了下提交记录，16:41还是提交高斯消元，原来我交了10次高斯。。ft)<br></span></p>
<p>&nbsp;</p>
<p><span>每个点记录三个状态：</span></p>
<p><span>A[u] &nbsp;</span><span>选<span>u<span>&nbsp;&nbsp; </span><span>&nbsp;&nbsp;</span>u</span>及其后代都亮</span></p>
<p><span>B[u] &nbsp;</span><span>不选<span>u &nbsp;&nbsp;u</span>及其后代都亮</span></p>
<p><span>C[u] &nbsp;</span><span>不选<span>u&nbsp;&nbsp;u</span>不亮，但是其后代都亮</span></p>
<p><span>显然有<span>A[u]=</span>∑<span>C[v]<span>&nbsp;&nbsp; </span>v</span>是<span>u</span>的儿子</span></p>
<p><span>B[u],C[u]</span><span>比较难求一点，需要多一次<span>dp</span></span></p>
<p><span>假设<span>u</span>有<span>n</span>个儿子</span></p>
<p><span>dp[i,j]</span><span>表示<span>u</span>的前<span>i</span>个儿子中有<span>j</span>个儿子是按了开关的（即<span>A[v]</span>）的最小值</span></p>
<p><span>dp[i,j] = min(dp[i-1,j]+B[v],dp[i-j,j-1]+A[v])</span></p>
<p><span>那么</span></p>
<p><span>B[u]=min(dp[n,k]); k</span><span>为奇数</span></p>
<p><span>C[u]=min(dp[n,k]); k</span><span>为偶数</span></p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;一个数据：<br>6<br>1 2<br>2 3<br>2 4<br>2 5<br>5 6<br>ans : 4<br><br><br></p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MAXN&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">G[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;A[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">],B[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">],C[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;dp[MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">][MAXN</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;treeDp(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;u,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;p)<br><img id=Codehighlighter1_211_903_Open_Image onclick="this.style.display='none'; Codehighlighter1_211_903_Open_Text.style.display='none'; Codehighlighter1_211_903_Closed_Image.style.display='inline'; Codehighlighter1_211_903_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_211_903_Closed_Image onclick="this.style.display='none'; Codehighlighter1_211_903_Closed_Text.style.display='none'; Codehighlighter1_211_903_Open_Image.style.display='inline'; Codehighlighter1_211_903_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_211_903_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_211_903_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;A[u]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">son;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">G[u].size();i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">size;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_294_416_Open_Image onclick="this.style.display='none'; Codehighlighter1_294_416_Open_Text.style.display='none'; Codehighlighter1_294_416_Closed_Image.style.display='inline'; Codehighlighter1_294_416_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_294_416_Closed_Image onclick="this.style.display='none'; Codehighlighter1_294_416_Closed_Text.style.display='none'; Codehighlighter1_294_416_Open_Image.style.display='inline'; Codehighlighter1_294_416_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_294_416_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_294_416_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;v</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">G[u][i];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(v</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">p)</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeDp(v,u);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A[u]</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">C[v];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;son.push_back(v);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">son.size();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">dp一下&nbsp;A[v]&nbsp;&nbsp;B[v]</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;dp[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_508_765_Open_Image onclick="this.style.display='none'; Codehighlighter1_508_765_Open_Text.style.display='none'; Codehighlighter1_508_765_Closed_Image.style.display='inline'; Codehighlighter1_508_765_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_508_765_Closed_Image onclick="this.style.display='none'; Codehighlighter1_508_765_Closed_Text.style.display='none'; Codehighlighter1_508_765_Open_Image.style.display='inline'; Codehighlighter1_508_765_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_508_765_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_508_765_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;v</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">son[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i][</span><span style="COLOR: #000000">0</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">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">B[v];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_606_759_Open_Image onclick="this.style.display='none'; Codehighlighter1_606_759_Open_Text.style.display='none'; Codehighlighter1_606_759_Closed_Image.style.display='inline'; Codehighlighter1_606_759_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_606_759_Closed_Image onclick="this.style.display='none'; Codehighlighter1_606_759_Closed_Text.style.display='none'; Codehighlighter1_606_759_Open_Image.style.display='inline'; Codehighlighter1_606_759_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_606_759_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_606_759_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">MAXN;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">j)dp[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min(dp[i][j],dp[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">B[v]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dp[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min(dp[i][j],dp[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">A[v]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;B[u]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">C[u]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">MAXN;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;k</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;k</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;k</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_817_901_Open_Image onclick="this.style.display='none'; Codehighlighter1_817_901_Open_Text.style.display='none'; Codehighlighter1_817_901_Closed_Image.style.display='inline'; Codehighlighter1_817_901_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_817_901_Closed_Image onclick="this.style.display='none'; Codehighlighter1_817_901_Closed_Text.style.display='none'; Codehighlighter1_817_901_Open_Image.style.display='inline'; Codehighlighter1_817_901_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_817_901_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_817_901_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(k</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)B[u]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min(B[u],dp[n][k]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;C[u]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">min(C[u],dp[n][k]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_916_1252_Open_Image onclick="this.style.display='none'; Codehighlighter1_916_1252_Open_Text.style.display='none'; Codehighlighter1_916_1252_Closed_Image.style.display='inline'; Codehighlighter1_916_1252_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_916_1252_Closed_Image onclick="this.style.display='none'; Codehighlighter1_916_1252_Closed_Text.style.display='none'; Codehighlighter1_916_1252_Open_Image.style.display='inline'; Codehighlighter1_916_1252_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_916_1252_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_916_1252_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n),n)<br><img id=Codehighlighter1_961_1236_Open_Image onclick="this.style.display='none'; Codehighlighter1_961_1236_Open_Text.style.display='none'; Codehighlighter1_961_1236_Closed_Image.style.display='inline'; Codehighlighter1_961_1236_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_961_1236_Closed_Image onclick="this.style.display='none'; Codehighlighter1_961_1236_Closed_Text.style.display='none'; Codehighlighter1_961_1236_Open_Image.style.display='inline'; Codehighlighter1_961_1236_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_961_1236_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_961_1236_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)G[i].clear();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_1043_1169_Open_Image onclick="this.style.display='none'; Codehighlighter1_1043_1169_Open_Text.style.display='none'; Codehighlighter1_1043_1169_Closed_Image.style.display='inline'; Codehighlighter1_1043_1169_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1043_1169_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1043_1169_Closed_Text.style.display='none'; Codehighlighter1_1043_1169_Open_Image.style.display='inline'; Codehighlighter1_1043_1169_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1043_1169_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1043_1169_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a,b;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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">&amp;</span><span style="COLOR: #000000">a,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">b);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G[a].push_back(b);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G[b].push_back(a);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;treeDp(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,min(A[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">],B[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br><br><br>2011.3.13 今天还出这题<br>数组开小了，wa了<br>n&lt;=100 我开101也不行？ T_T&nbsp;
<p align=left>状态表示为<br>dp[u,0] u父亲未亮，u及子树都已经点亮<br>dp[u,1] u父亲、u未亮，子树都亮<br>dp[u,2] u父亲、u及子树都亮了<br>转移是：<br>dp[u,0] &lt;- 奇数个dp[v,2] + 剩下的dp[v,0]&nbsp;&nbsp;&nbsp; v是u的儿子<br>dp[u,1] &lt;- 偶数个dp[v,2] + 剩下的dp[v,0]<br>dp[u,2] &lt;- 自身点亮1次 + 所有都是dp[v,1]<br>注意的是有一种思想：<br>方正点灯的顺序是无关的，所以在考虑u时，其子树该点的都已经点亮，<span style="BACKGROUND-COLOR: yellow">u是最后点的<br></span>这样会清晰很多，就不会再去考虑v是否还点<br>所以<span style="BACKGROUND-COLOR: yellow">实际情况从底往上点灯</span>。</p>
<br><br><br>附：<br>&nbsp;
<p align=center><strong><span>There is a tree</span></strong></p>
<p align=center><span>Time Limit:1000MS&nbsp; Memory Limit:65535K</span></p>
<p align=center><span>题型</span><span>: </span><span>编程题</span><span>&nbsp;&nbsp;&nbsp;</span><span>语言</span><span>: </span><span>无限制</span></p>
<p align=left><strong><span>Description</span></strong></p>
<p align=left><span>Tree is a graphy without loop and direction when defined in the graphy theory realm. There is a tree with a light and a button at each node. If the button is presses, the state of light at this node will switch to the other state, meaning that it will trun from ON to OFF, or from OFF to ON. Besides, the state of light in the neighbour nodes will also switch from ON to OFF or OFF to ON.</span></p>
<p align=left>&nbsp;</p>
<p align=left><span>At the beginning, all the lights are in the state OFF. It is your task to find out at least how many operations of switching should be performed in order to make all the light ON.</span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>Input</span></strong></p>
<p align=left><span>There are mutiple of data sets in the file.</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>At each case, the first line contains an integer n, indicating the number of Nodes in the tree. (n&lt;=100)</span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Then following n &#8211; 1 lines. Each line contains a pair number of x y, meaning that Node x and Node y is linked with an edge. </span></p>
<p align=left><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>The input file is terminated by a 0.</span></p>
<p align=left><strong><span>Output</span></strong></p>
<p align=left><span>For each case, output the minimal number of operations to light up all the lights.</span></p>
<p align=left><strong><span>Sample Input</span></strong></p>
<p align=left><span>3</span></p>
<p align=left><span>1 2</span></p>
<p align=left><span>1 3</span></p>
<p align=left><span>0</span></p>
<p align=left><strong><span>Sample Output</span></strong></p>
<p align=left><span>1</span></p>
<p align=left><strong>&nbsp;<br>数据： <a href="http://www.cppblog.com/Files/Yuan/_in.txt">in.txt</a>&nbsp; <a href="http://www.cppblog.com/Files/Yuan/_out.txt">out.txt</a></strong></p>
<img src ="http://www.cppblog.com/Yuan/aggbug/122373.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2010-08-05 23:26 <a href="http://www.cppblog.com/Yuan/archive/2010/08/05/122373.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spanning Tree  PKKJ出的一道生成树计数题</title><link>http://www.cppblog.com/Yuan/archive/2010/07/31/121815.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Sat, 31 Jul 2010 14:29:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2010/07/31/121815.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/121815.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2010/07/31/121815.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/121815.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/121815.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;今天08、09的个人排位赛，出了下面这道，一开始看觉得很难，后来推出来了后就不是很难了。<br>&nbsp;&nbsp;&nbsp;哈哈，只有我一个人做出来，下面说下怎么做。<br><span style="FONT-FAMILY: 'Lucida Console'; FONT-SIZE: 11pt; mso-fareast-font-family: 宋体; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 1.0pt; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA" lang=EN-US><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">&nbsp;题目定义一种叫做n<span>-circle five-angle 的图，问生成树的个数，每个点都算一个不同的点
<div align=center src_cetemp="/images/cppblog_com/yuan/a.jpg"><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/yuan/a.jpg" width=238 height=225></div>
<br>&nbsp;
<p align=center><span>Illustration 1: 4-circle five-angle graph</span></p>
&nbsp;&nbsp;&nbsp;首先，中间的环肯定要去掉一些，但是去掉多少条、哪几条呢？<br>&nbsp;&nbsp;&nbsp;可以枚举情况。就拿样例说，我们去掉任意的两条，得到下图：<br>
<div align=center src_cetemp="/images/cppblog_com/yuan/aa.jpg"><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/yuan/aa.jpg" width=236 height=225></div>
<br>&nbsp;&nbsp;&nbsp;红色的边表示去掉的。<br>&nbsp;&nbsp;&nbsp;1）对于非红色边组成的环，4条边任意一条都能删除，即4<sup>n-i </sup>这里i是中间环要删除的边数<br>&nbsp;&nbsp;&nbsp;2）对于红色边组成的环，这4*i条边只能删除一条，删多了就会不连通了，也即4*i种<br>&nbsp;&nbsp;&nbsp;再乘上一个组合数C(n,i)即可<br>&nbsp;&nbsp;&nbsp;所以F(n) = ∑ 4<sup>n-i</sup>*4*i*C(n,i)&nbsp;&nbsp;&nbsp; 1&#8804;i&#8804;n<br>&nbsp;&nbsp;&nbsp;样例给了2，注意是2条平行边形成的环！<br>&nbsp;&nbsp;&nbsp;
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;C[</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">],F[</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pow4(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n)</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">4^n</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_82_177_Open_Image onclick="this.style.display='none'; Codehighlighter1_82_177_Open_Text.style.display='none'; Codehighlighter1_82_177_Closed_Image.style.display='inline'; Codehighlighter1_82_177_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_82_177_Closed_Image onclick="this.style.display='none'; Codehighlighter1_82_177_Closed_Text.style.display='none'; Codehighlighter1_82_177_Open_Image.style.display='inline'; Codehighlighter1_82_177_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_82_177_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_82_177_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ans</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,p</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(n)<br><img id=Codehighlighter1_111_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_111_162_Open_Text.style.display='none'; Codehighlighter1_111_162_Closed_Image.style.display='inline'; Codehighlighter1_111_162_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_111_162_Closed_Image onclick="this.style.display='none'; Codehighlighter1_111_162_Closed_Text.style.display='none'; Codehighlighter1_111_162_Open_Image.style.display='inline'; Codehighlighter1_111_162_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_111_162_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_111_162_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(n</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)ans</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">ans</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2007</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2007</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="COLOR: #000000">&gt;&gt;=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;ans;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_190_574_Open_Image onclick="this.style.display='none'; Codehighlighter1_190_574_Open_Text.style.display='none'; Codehighlighter1_190_574_Closed_Image.style.display='inline'; Codehighlighter1_190_574_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_190_574_Closed_Image onclick="this.style.display='none'; Codehighlighter1_190_574_Closed_Text.style.display='none'; Codehighlighter1_190_574_Open_Image.style.display='inline'; Codehighlighter1_190_574_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_190_574_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_190_574_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">freopen("in","r",stdin);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">freopen("out","w",stdout);</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_276_364_Open_Image onclick="this.style.display='none'; Codehighlighter1_276_364_Open_Text.style.display='none'; Codehighlighter1_276_364_Closed_Image.style.display='inline'; Codehighlighter1_276_364_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_276_364_Closed_Image onclick="this.style.display='none'; Codehighlighter1_276_364_Closed_Text.style.display='none'; Codehighlighter1_276_364_Open_Image.style.display='inline'; Codehighlighter1_276_364_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_276_364_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_276_364_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C[i][i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">C[i][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">i;j</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(C[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">C[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][j</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2007</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;n</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;n</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_392_472_Open_Image onclick="this.style.display='none'; Codehighlighter1_392_472_Open_Text.style.display='none'; Codehighlighter1_392_472_Closed_Image.style.display='inline'; Codehighlighter1_392_472_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_392_472_Closed_Image onclick="this.style.display='none'; Codehighlighter1_392_472_Closed_Text.style.display='none'; Codehighlighter1_392_472_Open_Image.style.display='inline'; Codehighlighter1_392_472_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_392_472_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_392_472_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F[n]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;F[n]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(F[n]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">pow4(n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">i)</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">C[n][i])</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2007</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,T;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(T</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_514_559_Open_Image onclick="this.style.display='none'; Codehighlighter1_514_559_Open_Text.style.display='none'; Codehighlighter1_514_559_Closed_Image.style.display='inline'; Codehighlighter1_514_559_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_514_559_Closed_Image onclick="this.style.display='none'; Codehighlighter1_514_559_Closed_Text.style.display='none'; Codehighlighter1_514_559_Open_Image.style.display='inline'; Codehighlighter1_514_559_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_514_559_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_514_559_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,F[n]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
</span></v:shapetype></span><br><br><br>附题目：<br><br>&nbsp;
<h1><span>Problem A. Spanning Tree</span></h1>
<p><span>A peculiar graph, called <strong><em>n-circle five-angle graph</em></strong>, consists of a polygon with <strong><em>n</em></strong> vertices in the center, and each side of the central polygon is linked with a pentagon(pentagon: a polygon with 5 sides). There is an example of 4-circle five-angle graph below. Obviously, there are 4 vertices in the central polygon.</span></p>
<p><span>Now, it is you time to calculate how many spanning trees could this special graph generate. Pay attention that all the vertices in the graph should be regarded as different ones. Do you still remember the definition of spanning tree? Perhaps you may be familiar with the terminology of MST(minimal spanning tree). Yes, a spanning tree T of a connected, undirected graph G is a tree composed of all the vertices and some (or perhaps all) of the edges of G.</span></p>
<p align=center><img border=0 alt="" src="http://www.cppblog.com/images/cppblog_com/yuan/a.jpg" width=238 height=225><br><br></p>
<p align=center><span>Illustration 1: 4-circle five-angle graph</span></p>
<p><strong><span>Input:</span></strong></p>
<p><span>First line: <em>T</em>, the number of test case.</span></p>
<p><span>Then follow <em>T</em> lines, each line contains a number <strong><em>n(n &lt;= 2 &lt;= 100)</em></strong>, indicating it is an n-circle five-angle graph.</span></p>
<p><strong>&nbsp;</strong></p>
<p><strong><span>Output</span></strong><strong><span>：</span></strong><strong></strong></p>
<p><span>For each test case, output the answer mod 2007 pre line.</span></p>
<p><strong>&nbsp;</strong></p>
<p><strong><span>Sample Input</span></strong></p>
<div>
<p><span>1</span></p>
<p><span>2</span></p>
</div>
<p>&nbsp;</p>
<p><strong><span>Sample Output</span></strong></p>
<div>
<p><span>40</span></p>
</div>
<p align=left>&nbsp;<br>测试数据：<a href="http://www.cppblog.com/Files/Yuan/in.txt">in.txt</a>&nbsp;&nbsp; <a href="http://www.cppblog.com/Files/Yuan/out.txt">out.txt</a>&nbsp; </p>
<img src ="http://www.cppblog.com/Yuan/aggbug/121815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2010-07-31 22:29 <a href="http://www.cppblog.com/Yuan/archive/2010/07/31/121815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdu 2766 保留最多的公共部分，该点保留的话则根的值也确定了</title><link>http://www.cppblog.com/Yuan/archive/2010/04/29/113917.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Wed, 28 Apr 2010 16:16:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2010/04/29/113917.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/113917.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2010/04/29/113917.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/113917.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/113917.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_169_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_169_Open_Text.style.display='none'; Codehighlighter1_0_169_Closed_Image.style.display='inline'; Codehighlighter1_0_169_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_169_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_169_Closed_Text.style.display='none'; Codehighlighter1_0_169_Open_Image.style.display='inline'; Codehighlighter1_0_169_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_169_Closed_Text>/**/</span><span id=Codehighlighter1_0_169_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;不错的一道题<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;题意：给出一棵二叉树，有权值，求改变最小的点使平衡<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;其实，有些点不用改变，所以如果第k层的点a不用改变，则平衡时其根的值为a*2^k<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;所以算出所有点，如果它不用改变时对应根的值，存在数组里<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;然后求这个数组里相同个数最多的Max，答案就是tot-Max了<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;还有，遇到[表示层次++，遇到]表示层次--<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">algorithm</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MAXN</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1000010</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[MAXN];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;ans[MAXN];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_321_876_Open_Image onclick="this.style.display='none'; Codehighlighter1_321_876_Open_Text.style.display='none'; Codehighlighter1_321_876_Closed_Image.style.display='inline'; Codehighlighter1_321_876_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_321_876_Closed_Image onclick="this.style.display='none'; Codehighlighter1_321_876_Closed_Text.style.display='none'; Codehighlighter1_321_876_Open_Image.style.display='inline'; Codehighlighter1_321_876_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_321_876_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_321_876_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T);<br><img id=Codehighlighter1_359_863_Open_Image onclick="this.style.display='none'; Codehighlighter1_359_863_Open_Text.style.display='none'; Codehighlighter1_359_863_Closed_Image.style.display='inline'; Codehighlighter1_359_863_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_359_863_Closed_Image onclick="this.style.display='none'; Codehighlighter1_359_863_Closed_Text.style.display='none'; Codehighlighter1_359_863_Open_Image.style.display='inline'; Codehighlighter1_359_863_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(T</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_359_863_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_359_863_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,str);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;level</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">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_426_677_Open_Image onclick="this.style.display='none'; Codehighlighter1_426_677_Open_Text.style.display='none'; Codehighlighter1_426_677_Closed_Image.style.display='inline'; Codehighlighter1_426_677_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_426_677_Closed_Image onclick="this.style.display='none'; Codehighlighter1_426_677_Closed_Text.style.display='none'; Codehighlighter1_426_677_Open_Image.style.display='inline'; Codehighlighter1_426_677_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;str[i];i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_426_677_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_426_677_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(str[i]</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">)level</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(str[i]</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">)level</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_523_673_Open_Image onclick="this.style.display='none'; Codehighlighter1_523_673_Open_Text.style.display='none'; Codehighlighter1_523_673_Closed_Image.style.display='inline'; Codehighlighter1_523_673_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_523_673_Closed_Image onclick="this.style.display='none'; Codehighlighter1_523_673_Closed_Text.style.display='none'; Codehighlighter1_523_673_Open_Image.style.display='inline'; Codehighlighter1_523_673_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(str[i]</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">str[i]</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_523_673_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_523_673_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;tmp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(;str[i]</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">str[i]</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">str[i]</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">tmp</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">str[i]</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">tmp</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">level;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[tot</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">tmp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sort(ans,ans</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">tot);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;Max</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,cnt</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_743_833_Open_Image onclick="this.style.display='none'; Codehighlighter1_743_833_Open_Text.style.display='none'; Codehighlighter1_743_833_Closed_Image.style.display='inline'; Codehighlighter1_743_833_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_743_833_Closed_Image onclick="this.style.display='none'; Codehighlighter1_743_833_Closed_Text.style.display='none'; Codehighlighter1_743_833_Open_Image.style.display='inline'; Codehighlighter1_743_833_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">tot;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_743_833_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_743_833_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">ans[i]</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">ans[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">])cnt</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_789_829_Open_Image onclick="this.style.display='none'; Codehighlighter1_789_829_Open_Text.style.display='none'; Codehighlighter1_789_829_Closed_Image.style.display='inline'; Codehighlighter1_789_829_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_789_829_Closed_Image onclick="this.style.display='none'; Codehighlighter1_789_829_Closed_Text.style.display='none'; Codehighlighter1_789_829_Open_Image.style.display='inline'; Codehighlighter1_789_829_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_789_829_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_789_829_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(Max</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cnt)Max</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">cnt;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,tot</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">Max);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/113917.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2010-04-29 00:16 <a href="http://www.cppblog.com/Yuan/archive/2010/04/29/113917.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hdoj 3363</title><link>http://www.cppblog.com/Yuan/archive/2010/04/27/113676.html</link><dc:creator>_Yuan</dc:creator><author>_Yuan</author><pubDate>Tue, 27 Apr 2010 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/Yuan/archive/2010/04/27/113676.html</guid><wfw:comment>http://www.cppblog.com/Yuan/comments/113676.html</wfw:comment><comments>http://www.cppblog.com/Yuan/archive/2010/04/27/113676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Yuan/comments/commentRss/113676.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Yuan/services/trackbacks/113676.html</trackback:ping><description><![CDATA[<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_0_130_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_130_Open_Text.style.display='none'; Codehighlighter1_0_130_Closed_Image.style.display='inline'; Codehighlighter1_0_130_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_0_130_Closed_Image onclick="this.style.display='none'; Codehighlighter1_0_130_Closed_Text.style.display='none'; Codehighlighter1_0_130_Open_Image.style.display='inline'; Codehighlighter1_0_130_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_0_130_Closed_Text>/**/</span><span id=Codehighlighter1_0_130_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;好题<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;有一个结论，最多只需两刀切<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;用一个长度为n/2的区间去扫就行<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;如果这个区间里H的个数为h/2，则T的个数也为t/2，就满足了<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;所以只考虑H的变化，当它满足了就满足了<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;而扫的过程，H&nbsp;++或--或不变，但由于不平衡，所以总会变到h/2<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif"></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstdio</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstring</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;MAXN</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">100010</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum[MAXN];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img id=Codehighlighter1_218_645_Open_Image onclick="this.style.display='none'; Codehighlighter1_218_645_Open_Text.style.display='none'; Codehighlighter1_218_645_Closed_Image.style.display='inline'; Codehighlighter1_218_645_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_218_645_Closed_Image onclick="this.style.display='none'; Codehighlighter1_218_645_Closed_Text.style.display='none'; Codehighlighter1_218_645_Open_Image.style.display='inline'; Codehighlighter1_218_645_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_218_645_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_218_645_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch;<br><img id=Codehighlighter1_265_632_Open_Image onclick="this.style.display='none'; Codehighlighter1_265_632_Open_Text.style.display='none'; Codehighlighter1_265_632_Closed_Image.style.display='inline'; Codehighlighter1_265_632_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_265_632_Closed_Image onclick="this.style.display='none'; Codehighlighter1_265_632_Closed_Text.style.display='none'; Codehighlighter1_265_632_Open_Image.style.display='inline'; Codehighlighter1_265_632_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n),n)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_265_632_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_265_632_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_290_355_Open_Image onclick="this.style.display='none'; Codehighlighter1_290_355_Open_Text.style.display='none'; Codehighlighter1_290_355_Closed_Image.style.display='inline'; Codehighlighter1_290_355_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_290_355_Closed_Image onclick="this.style.display='none'; Codehighlighter1_290_355_Closed_Text.style.display='none'; Codehighlighter1_290_355_Open_Image.style.display='inline'; Codehighlighter1_290_355_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_290_355_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_290_355_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">getchar();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">sum[i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(ch</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">H</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)sum[i]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_376_402_Open_Image onclick="this.style.display='none'; Codehighlighter1_376_402_Open_Text.style.display='none'; Codehighlighter1_376_402_Closed_Image.style.display='inline'; Codehighlighter1_376_402_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_376_402_Closed_Image onclick="this.style.display='none'; Codehighlighter1_376_402_Closed_Text.style.display='none'; Codehighlighter1_376_402_Open_Image.style.display='inline'; Codehighlighter1_376_402_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(sum[n]</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_376_402_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_376_402_Open_Text><span style="COLOR: #000000">{printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-1\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;beg</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,end</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br><img id=Codehighlighter1_439_551_Open_Image onclick="this.style.display='none'; Codehighlighter1_439_551_Open_Text.style.display='none'; Codehighlighter1_439_551_Closed_Image.style.display='inline'; Codehighlighter1_439_551_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_439_551_Closed_Image onclick="this.style.display='none'; Codehighlighter1_439_551_Closed_Text.style.display='none'; Codehighlighter1_439_551_Open_Image.style.display='inline'; Codehighlighter1_439_551_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(end</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_439_551_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_439_551_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((sum[end]</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sum[beg])</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">sum[n]</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((end</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sum[end])</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">(beg</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sum[beg]))</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">sum[n])</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;beg</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">,end</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(end</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1\n%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,end);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2\n%d&nbsp;%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,beg,end);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<img src ="http://www.cppblog.com/Yuan/aggbug/113676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Yuan/" target="_blank">_Yuan</a> 2010-04-27 09:29 <a href="http://www.cppblog.com/Yuan/archive/2010/04/27/113676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>