﻿<?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++博客-生无所息-随笔分类-URAL</title><link>http://www.cppblog.com/3144046cjc/category/11251.html</link><description>像蜗牛啦漫步</description><language>zh-cn</language><lastBuildDate>Tue, 21 Jul 2009 20:28:05 GMT</lastBuildDate><pubDate>Tue, 21 Jul 2009 20:28:05 GMT</pubDate><ttl>60</ttl><item><title>URAL 1022 Genealogical tree</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90748.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Tue, 21 Jul 2009 09:14:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90748.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90748.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90748.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90748.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90748.html</trackback:ping><description><![CDATA[拓扑排序是最直接的算法.<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;拓扑排序&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;">#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></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></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></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></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;">120</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">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;adj[MAXN];<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;into[MAXN];<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.in","r",stdin);<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.out","w",stdout);</span><span style="color: #008000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(into,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(into));<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&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;">0</span><span style="color: #000000;">)&nbsp;<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;adj[i].push_back(x);<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">into[x];<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">for&nbsp;(int&nbsp;i=1;i&lt;=n;++i)&nbsp;cout&nbsp;&lt;&lt;&nbsp;into[i]&nbsp;&lt;&lt;&nbsp;'&nbsp;';&nbsp;cout&nbsp;&lt;&lt;&nbsp;endl;</span><span style="color: #008000;"><br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;everp</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&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;k</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;k</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">k)<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">for</span><span style="color: #000000;">&nbsp;(;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">n;i</span><span style="color: #000000;">++</span><span style="color: #000000;">)&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">into[i])&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(everp)&nbsp;</span><span style="color: #000000;">?</span><span style="color: #000000;">&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;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;i&nbsp;:&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;i;<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;everp</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">--</span><span style="color: #000000;">into[i];<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">adj[i].size();</span><span style="color: #000000;">++</span><span style="color: #000000;">j)&nbsp;</span><span style="color: #000000;">--</span><span style="color: #000000;">into[&nbsp;adj[i][j]&nbsp;];<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&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><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/3144046cjc/aggbug/90748.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/3144046cjc/" target="_blank">Chen Jiecao</a> 2009-07-21 17:14 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/21/90748.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URAL 1021 Sacrament of the sum</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90747.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Tue, 21 Jul 2009 09:12:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90747.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90747.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/21/90747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90747.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90747.html</trackback:ping><description><![CDATA[水题,由于给出的已经是单调的序列,所以有o(N)的算法<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"></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></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></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;">50005</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data.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: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">data.out</span><span style="color: #000000;">"</span><span style="color: #000000;">,</span><span style="color: #000000;">"</span><span style="color: #000000;">w</span><span style="color: #000000;">"</span><span style="color: #000000;">,stdout);<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;c,cc,num[MAXN];<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;c;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&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</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;">c;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;num[i];<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;num[c]</span><span style="color: #000000;">=</span><span style="color: #000000;">31440461</span><span style="color: #000000;">;<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;cc;<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&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</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;">cc;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x;<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&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;">num[p]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">10000</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">p;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&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;">num[p]</span><span style="color: #000000;">==</span><span style="color: #000000;">10000</span><span style="color: #000000;">)&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;">YES\n</span><span style="color: #000000;">"</span><span style="color: #000000;">;&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;}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&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;">NO\n</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&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><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br> <img src ="http://www.cppblog.com/3144046cjc/aggbug/90747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/3144046cjc/" target="_blank">Chen Jiecao</a> 2009-07-21 17:12 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/21/90747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URAL 1020 Rope</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90636.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Mon, 20 Jul 2009 08:49:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90636.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90636.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90636.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90636.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90636.html</trackback:ping><description><![CDATA[水题,没什么好说的,注意N=1的情况.<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">math.h</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></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></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;PI</span><span style="color: #000000;">=</span><span style="color: #000000;">3.1415926</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">template&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;T</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">T&nbsp;dis(T&nbsp;x1,T&nbsp;y1,T&nbsp;x2,T&nbsp;y2)<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;sqrt(&nbsp;(x1</span><span style="color: #000000;">-</span><span style="color: #000000;">x2)</span><span style="color: #000000;">*</span><span style="color: #000000;">(x1</span><span style="color: #000000;">-</span><span style="color: #000000;">x2)&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;(y1</span><span style="color: #000000;">-</span><span style="color: #000000;">y2)</span><span style="color: #000000;">*</span><span style="color: #000000;">(y1</span><span style="color: #000000;">-</span><span style="color: #000000;">y2)&nbsp;);<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;r,len</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.in","r",stdin);<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.out","w",stdout);</span><span style="color: #008000;"><br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;r;<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;x0,y0,x,y;<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x0&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;y0;<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">double</span><span style="color: #000000;">&nbsp;px</span><span style="color: #000000;">=</span><span style="color: #000000;">x0,py</span><span style="color: #000000;">=</span><span style="color: #000000;">y0;<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">if</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: #0000ff;">goto</span><span style="color: #000000;">&nbsp;<span style="color: red;">L1</span>;<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;x&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;y;<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;len</span><span style="color: #000000;">+=</span><span style="color: #000000;">dis(px,py,x,y);<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;px</span><span style="color: #000000;">=</span><span style="color: #000000;">x;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;py</span><span style="color: #000000;">=</span><span style="color: #000000;">y;<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;len</span><span style="color: #000000;">+=</span><span style="color: #000000;">dis(x,y,x0,y0);<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;"><span style="color: red;">L1</span>:&nbsp;&nbsp;len</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;">PI</span><span style="color: #000000;">*</span><span style="color: #000000;">r&nbsp;;<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;printf(</span><span style="color: #000000;">"</span><span style="color: #000000;">%.2f\n</span><span style="color: #000000;">"</span><span style="color: #000000;">,len);<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&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><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><img src ="http://www.cppblog.com/3144046cjc/aggbug/90636.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/3144046cjc/" target="_blank">Chen Jiecao</a> 2009-07-20 16:49 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/20/90636.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URAL 1019 A line painting</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90624.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Mon, 20 Jul 2009 07:00:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90624.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90624.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/20/90624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90624.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90624.html</trackback:ping><description><![CDATA[<h2 style="text-align: center;" class="problem_title">A Line painting</h2>
<div style="text-align: center;" class="problem_limits">Time Limit: 2.0 second<br>Memory Limit: 16 MB<br></div>
<div id="problem_text">
<div class="problem_par">
<div class="problem_par_normal">The segment of numerical axis from 0 to 10<sup>9</sup>
is painted into white color. After that some parts of this segment are
painted into black, then some into white again and so on. In total
there have been made <em>N</em> re-paintings (1 &#8804; <em>N</em> &#8804; 5000). You are to write a program that finds the longest white open interval after this sequence of re-paintings.
</div>
</div>
<h3 class="problem_subtitle">Input</h3>
<div class="problem_par">
<div class="problem_par_normal">The first line of input contains the only number <em>N</em>. Next <em>N</em> lines contain information about re-paintings. Each of these lines has a form:<br>
<strong><em>a<sub>i</sub></em>  <em>b<sub>i</sub></em>  <em>c<sub>i</sub></em></strong><br>
where <em>a<sub>i</sub></em> and <em>b<sub>i</sub></em> are integers, <em>c<sub>i</sub></em> is symbol 'b' or 'w', <em>a<sub>i</sub></em>, <em>b<sub>i</sub></em>, <em>c<sub>i</sub></em> are separated by spaces. <br>
This triple of parameters represents repainting of segment from <em>a<sub>i</sub></em> to <em>b<sub>i</sub></em> into color <em>c<sub>i</sub></em> ('w' — white, 'b' — black). You may assume that 0 &lt; <em>a<sub>i</sub></em> &lt; <em>b<sub>i</sub></em> &lt; 10<sup>9</sup>.
</div>
</div>
<h3 class="problem_subtitle">Output</h3>
<div class="problem_par">
<div class="problem_par_normal">Output should contain two numbers <em>x</em> and <em>y</em> (<em>x</em> &lt; <em>y</em>)
divided by space(s). These numbers should define the longest white open
interval. If there are more than one such an interval output should
contain the one with the smallest <em>x</em>.</div>
</div>
<h3 class="problem_subtitle">Sample</h3>
<table style="width: 727px; height: 101px;" class="sample">
    <col width="350"><col width="350">
    <tbody>
        <tr>
            <th style="text-align: left;">input</th>
            <th style="text-align: left;">output</th>
        </tr>
        <tr>
            <td>
            <pre class="intable">4<br>1 999999997 b<br>40 300 w<br>300 634 w<br>43 47 b<br></pre>
            </td>
            <td>
            <pre class="intable">47 634                                                        <br></pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
这个题目最直接的办法是离散化,离散化了之后就好折腾了,因为操作指令很少,所以我选择离散+朴素染色.<br>复杂度上界为O(M*M),这里M表示离散化后得到的区间个数.<br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;">#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></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></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></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></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;">10005</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">const</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;MAXL</span><span style="color: #000000;">=</span><span style="color: #000000;">1000000000</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;re<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b;<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;c;<br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;">}op[MAXN];<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,p</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">,que[MAXN];<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;color[MAXN</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">1</span><span style="color: #000000;">];<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;"></span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;二分查找&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;find(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;num)<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">,r</span><span style="color: #000000;">=</span><span style="color: #000000;">p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,mid;<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;(r</span><span style="color: #000000;">-</span><span style="color: #000000;">l</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">1</span><span style="color: #000000;">)<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="color: #000000;">=</span><span style="color: #000000;">(l</span><span style="color: #000000;">+</span><span style="color: #000000;">r)&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(que[mid]</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">num)</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">=</span><span style="color: #000000;">mid&nbsp;:&nbsp;r</span><span style="color: #000000;">=</span><span style="color: #000000;">mid;<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(que[l]</span><span style="color: #000000;">==</span><span style="color: #000000;">num)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;l;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;l;<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;disp(re</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;op)<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;区间由1开始数,而不是由0开始&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;op.a</span><span style="color: #000000;">=</span><span style="color: #000000;">find(op.a)</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;op.b</span><span style="color: #000000;">=</span><span style="color: #000000;">find(op.b);<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;mark(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r,</span><span style="color: #0000ff;">char</span><span style="color: #000000;">&nbsp;c)<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">l;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">r;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;color[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">(c</span><span style="color: #000000;">==</span><span style="color: #000000;">'</span><span style="color: #000000;">b</span><span style="color: #000000;">'</span><span style="color: #000000;">);<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;freopen("data.in","r",stdin);<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #008000;">&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;freopen("data.out","w",stdout);</span><span style="color: #008000;"><br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;op[i].a&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;op[i].b&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;op[i].c;<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que[</span><span style="color: #000000;">++</span><span style="color: #000000;">p]</span><span style="color: #000000;">=</span><span style="color: #000000;">op[i].a;<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que[</span><span style="color: #000000;">++</span><span style="color: #000000;">p]</span><span style="color: #000000;">=</span><span style="color: #000000;">op[i].b;<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;que[</span><span style="color: #000000;">++</span><span style="color: #000000;">p]</span><span style="color: #000000;">=</span><span style="color: #000000;">MAXL;<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;删除重复出现的数字&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rp</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&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</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;">p;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(que[rp]</span><span style="color: #000000;">!=</span><span style="color: #000000;">que[i])&nbsp;que[</span><span style="color: #000000;">++</span><span style="color: #000000;">rp]</span><span style="color: #000000;">=</span><span style="color: #000000;">que[i];<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;p</span><span style="color: #000000;">=</span><span style="color: #000000;">rp;<br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;排序,便于定位和离散化&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;sort(que,que</span><span style="color: #000000;">+</span><span style="color: #000000;">p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;que[p</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;">MAXL</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;对操作进行离散处理&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;disp(op[i]);<br></span><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">/*</span><span style="color: #008000;">&nbsp;处理操作序列&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(color,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(color));<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;mark(op[i].a,op[i].b,op[i].c);<br></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;t</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">,a,b,mlen</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">66</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">p</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;">i)<br></span><span style="color: #008080;">67</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(color[i]</span><span style="color: #000000;">!=</span><span style="color: #000000;">color[t]&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">p)<br></span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;<br></span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;((</span><span style="color: #000000;">!</span><span style="color: #000000;">color[t])&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(que[i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">-</span><span style="color: #000000;">que[t</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">mlen))&nbsp;{&nbsp;a</span><span style="color: #000000;">=</span><span style="color: #000000;">que[t</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">];b</span><span style="color: #000000;">=</span><span style="color: #000000;">que[i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">];mlen</span><span style="color: #000000;">=</span><span style="color: #000000;">que[i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">-</span><span style="color: #000000;">que[t</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">];}<br></span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000;">=</span><span style="color: #000000;">i;<br></span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">system("pause");</span><span style="color: #008000;"><br></span><span style="color: #008080;">74</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&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><span style="color: #008080;">75</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">76</span>&nbsp;<span style="color: #000000;"></span></div>
个别目标远大的同学可能并不仅仅是想解决这个题目,这时候建议你使用离散化+线段树,复杂度会大大地降低<br>    <img src ="http://www.cppblog.com/3144046cjc/aggbug/90624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/3144046cjc/" target="_blank">Chen Jiecao</a> 2009-07-20 15:00 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/20/90624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URAL 1018  A Binary Apple Tree</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/19/90553.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Sun, 19 Jul 2009 15:02:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/19/90553.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90553.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/19/90553.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90553.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90553.html</trackback:ping><description><![CDATA[<div style="text-align: center;" class="problem_limits">
<h2 class="problem_title">A Binary Apple Tree</h2>
<br>Time Limit: 1.0 second<br>Memory Limit: 16 MB<br></div>
<div class="problem_par">
<div class="problem_par_normal">Let's
imagine how apple tree looks in binary computer world. You're right, it
looks just like a binary tree, i.e. any biparous branch splits up to
exactly two new branches. We will enumerate by natural numbers the root
of binary apple tree, points of branching and the ends of twigs. This
way we may distinguish different branches by their ending points. We
will assume that root of tree always is numbered by 1 and all numbers
used for enumerating are numbered in range from 1 to <em>N</em>, where <em>N</em> is the total number of all enumerated points. For instance in the picture below <em>N</em> is equal to 5. Here is an example of an enumerated tree with four branches:</div>
</div>
<div class="problem_par_pre">
<table align="CENTER" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <pre class="intable">2   5<br> \ / <br>  3   4<br>   \ /<br>    1<br></pre>
            </td>
        </tr>
    </tbody>
</table>
</div>
<div class="problem_par">
<div class="problem_par_normal">As
you may know it's not convenient to pick an apples from a tree when
there are too much of branches. That's why some of them should be
removed from a tree. But you are interested in removing branches in the
way of minimal loss of apples.
So your are given amounts of apples on a branches and amount of
branches that should be preserved. Your task is to determine how many
apples can remain on a tree after removing of excessive branches.
</div>
</div>
<h3 class="problem_subtitle">Input</h3>
<div class="problem_par">
<div class="problem_par_normal">First line of input contains two numbers: <em>N</em> and <em>Q</em> (1 &#8804; <em>Q</em> &#8804; <em>N</em>; 1 &lt; <em>N</em> &#8804; 100). <em>N</em> denotes the number of enumerated points in a tree. <em>Q</em> denotes amount of branches that should be preserved. Next <em>N</em>&#8722;1
lines contains descriptions of branches. Each description consists of a
three integer numbers divided by spaces. The first two of them define
branch by it's ending points. The third number defines the number of
apples on this branch. You may assume that no branch contains more than
30000 apples.</div>
</div>
<h3 class="problem_subtitle">Output</h3>
<div class="problem_par">
<div class="problem_par_normal">Output should contain the only number&nbsp;— amount of apples that can be preserved. And don't forget to preserve tree's root ;-)</div>
</div>
<h3 class="problem_subtitle">Sample</h3>
<table class="sample">
    <col width="350"><col width="350">
    <tbody>
        <tr>
            <th>input</th>
            <th>output</th>
        </tr>
        <tr>
            <td>
            <pre class="intable">5 2<br>1 3 1<br>1 4 10<br>2 3 20<br>3 5 20<br></pre>
            </td>
            <td>
            <pre class="intable">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;21<br></pre>
            </td>
        </tr>
    </tbody>
</table>
<br>简析:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是一个简单的树形动态规划问题,大概可以拿来当这类题目的入门训练题.虽然这是URAL上的第一个树形DP,但是我奇怪的是它的通过率并不很高.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于原题目的图形,用数组value[a][b]表示a,b点间苹果的个数,用nd[p].L,nd[p].R分别表示节点p的左右儿子.通过build_tree(1)获得数组nd[],从而获得整棵树的信息.<br>接着,用ans[p][i]表示<span style="color: #ff0000;">以节点p为祖宗的子树,保留的枝条不超过i条时所能保留的最多的苹果</span>,状态转移有一下几种情况.<br>在除去多余枝条的后的图中,<br>1.&nbsp; <span style="color: #ff0000;">p只与一个儿子相连:</span><br>&nbsp;&nbsp;&nbsp; ans[p][i]=max(ans[left_son][i-1]+value[left_son][p],ans[right_son][i-1]+value[right_son][p]);<br>2.&nbsp; <span style="color: #ff0000;">p与两个儿子相连:</span><br>&nbsp;&nbsp;&nbsp; for (int j=0;j&lt;=i-2;++j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ans[p][i]=max(ans[p][i],ans[left_son][j]+ans[right_son][i-j-2]+d);&nbsp;
<br>&nbsp;&nbsp;&nbsp; 这里,d=value[left_son][p]+value[right_son][p];
<br><br>算法在o(N*Q*Q)级别<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #008080;">&nbsp;1</span>&nbsp;<span style="color: #000000;">#include</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">iostream</span><span style="color: #000000;">&gt;</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #000000;"></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></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #000000;"></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;">102</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,q,value[MAXN][MAXN],ans[MAXN][MAXN];<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;node<br></span><span style="color: #008080;">&nbsp;6</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l,r;<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">}nd[MAXN];<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">10</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;build_tree(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p)<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;flg</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(value[p][i]&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">nd[i].l))<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;flg</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(nd[p].l</span><span style="color: #000000;">==</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;nd[p].l</span><span style="color: #000000;">=</span><span style="color: #000000;">i;<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{nd[p].r</span><span style="color: #000000;">=</span><span style="color: #000000;">i;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;}<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">flg)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(nd[p].l)&nbsp;build_tree(nd[p].l);<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(nd[p].r)&nbsp;build_tree(nd[p].r);<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;calc(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p)<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">nd[p].l)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;l</span><span style="color: #000000;">=</span><span style="color: #000000;">nd[p].l,r</span><span style="color: #000000;">=</span><span style="color: #000000;">nd[p].r;<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;calc(l);<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;calc(r);<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;ans[p][</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">max(value[l][p],value[r][p]);<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;d</span><span style="color: #000000;">=</span><span style="color: #000000;">value[l][p]</span><span style="color: #000000;">+</span><span style="color: #000000;">value[r][p];<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">2</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">q;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;{&nbsp;&nbsp;<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;ans[p][i]</span><span style="color: #000000;">=</span><span style="color: #000000;">max(ans[l][i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">+</span><span style="color: #000000;">value[l][p],ans[r][i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">+</span><span style="color: #000000;">value[r][p]);<br></span><span style="color: #008080;">38</span>&nbsp;<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;">int</span><span style="color: #000000;">&nbsp;j</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;j</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">i</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">;</span><span style="color: #000000;">++</span><span style="color: #000000;">j)<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans[p][i]</span><span style="color: #000000;">=</span><span style="color: #000000;">max(ans[p][i],ans[l][j]</span><span style="color: #000000;">+</span><span style="color: #000000;">ans[r][i</span><span style="color: #000000;">-</span><span style="color: #000000;">j</span><span style="color: #000000;">-</span><span style="color: #000000;">2</span><span style="color: #000000;">]</span><span style="color: #000000;">+</span><span style="color: #000000;">d);<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;main()<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.in","r",stdin);<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #008000;">&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">freopen("data.out","w",stdout);</span><span style="color: #008000;"><br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #008000;"></span><span style="color: #000000;">&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;q;<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(value,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(value));<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&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</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;i</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;a,b,c;<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;a&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;b&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;c;<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value[a][b]</span><span style="color: #000000;">=</span><span style="color: #000000;">c;<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value[b][a]</span><span style="color: #000000;">=</span><span style="color: #000000;">c;<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">57</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(nd,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(nd));<br></span><span style="color: #008080;">58</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;build_tree(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;calc(</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;ans[</span><span style="color: #000000;">1</span><span style="color: #000000;">][q]&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">61</span>&nbsp;<span style="color: #000000;">&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><span style="color: #008080;">62</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">63</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><br>   <img src ="http://www.cppblog.com/3144046cjc/aggbug/90553.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/3144046cjc/" target="_blank">Chen Jiecao</a> 2009-07-19 23:02 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/19/90553.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>