﻿<?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++博客-生无所息</title><link>http://www.cppblog.com/3144046cjc/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:41:04 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:41:04 GMT</pubDate><ttl>60</ttl><item><title>TJU_OI 1090 战地统计系统(War Field Statistical System)</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91264.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Sun, 26 Jul 2009 12:19:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91264.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/91264.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/91264.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/91264.html</trackback:ping><description><![CDATA[<h1>1090. &nbsp;战地统计系统(War Field Statistical System)</h1>
<div id="pmisc">
<table>
    <tbody>
        <tr>
            <td width="40%">
            输入文件名：c.in &nbsp; &nbsp;
            输出文件名：c.out
            </td>
            <td style="text-align: right;">
            <a rel="nofollow" href="http://oi.tju.edu.cn/problem/submit/1090/">提交</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/community/board/3/">讨论</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/status?pid=1090">运行状况</a>&nbsp;
            </td>
        </tr>
    </tbody>
</table>
</div>
<hr>
<p>
2050年，人类与外星人之间的战争已趋于白热化。就在这时，人类发明出一种超级武器，这种武器能够同时对相邻的多个目标进行攻击。凡是防御力小于或等于
这种武器攻击力的外星人遭到它的攻击，就会被消灭。然而，拥有超级武器是远远不够的，人们还需要一个战地统计系统时刻反馈外星人部队的信息。这个艰巨的任
务落在你的身上。请你尽快设计出这样一套系统。
</p>
<p>
这套系统需要具备能够处理如下2类信息的能力：
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;1.外星人向[x1，x2]内的每个位置增援一支防御力为v的部队。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;2.人类使用超级武器对[x1，x2]内的所有位置进行一次攻击力为v的打击。系统需要返回在这次攻击中被消灭的外星人个数。
</p>
<p>注：防御力为i的外星人部队由i个外星人组成，其中第j个外星人的防御力为j。</p>
<p><strong> 输入格式</strong> </p>
<p>
从文件c.in第一行读入n，m。其中n表示有n个位置，m表示有m条信息。
</p>
<p>
以下有m行，每行有4个整数k，x1，x2，v用来描述一条信息 。k表示这条信息属于第k类。x1，x2，v为相应信息的参数。k=1 or 2。</p>
<p>注：你可以认为最初的所有位置都没有外星人存在。</p>
<p>规模：0&lt;n&#8804;1000；0&lt;x1&#8804;x2&#8804;n；0&lt;v&#8804;1000；0&lt;m&#8804;2000
</p>
<p><strong> 输出格式</strong> </p>
<p>
结果输出到文件c.out。按顺序输出需要返回的信息。
</p>
<p><strong> 输入样例</strong> </p>
<pre>3 5<br>1 1 3 4<br>2 1 2 3<br>1 1 2 2<br>1 2 3 1<br>2 2 3 5<br><br></pre>
<p><strong> 输出样例</strong> </p>
<pre>6<br>9<br><br></pre>
<p><strong> 样例说明</strong> </p>
<pre>输入样例   对应输出     输出样例<br>3 5             无              6<br>1 1 3 4         无              9<br>2 1 2 3         6<br>1 1 2 2         无<br>1 2 3 1         无<br>2 2 3 5         9<br><br></pre>
<p><strong> 题目来源</strong> ：<a href="http://oi.tju.edu.cn/problem/source/26/">OIBH 信息学练习赛 #6</a></p>
<p><strong> 题目标签</strong> ：
</p>
<p><font color="green">二维</font>(1) &nbsp;
<font color="green">线段树</font>(1) &nbsp;
</p>
这个题目的标签是二维+线段树,我估计有些哥们真的用二维线段树来做了,查看了一下后面的代码,发现大多数的人的代码都超过2k,有的还达到s四五k之多.<br>我的思路是把这个题目转化成矩形切割来做,x,y,v三个参数以及默认的一个初始值代表了一个矩形区域,左下角(x1,y1)=(x,1),右上角(x2,y2)=(y,v);<br>切割的大体方法是从USACO上的一个题目学来的,类似木块上浮,从第一个矩形一直浮到最上面的矩形,每碰到一个遮盖的矩形就分裂当前矩形,在上浮的过程中计算出每次询问的答案.<br>如果你对矩形切割很了解,相信我的代码还是比较容易理解的.<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;"></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;MAXM</span><span style="color: #000000;">=</span><span style="color: #000000;">3000</span><span style="color: #000000;">+</span><span style="color: #000000;">100</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">struct</span><span style="color: #000000;">&nbsp;rect<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;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x1,y1,x2,y2;<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;rect(){};<br></span><span style="color: #008080;">&nbsp;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;rect(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x1,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y1,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;x2,</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y2)&nbsp;:&nbsp;x1(x1),y1(y1),x2(x2),y2(y2)&nbsp;{}<br></span><span style="color: #008080;">&nbsp;9</span>&nbsp;<span style="color: #000000;">}temp,q[MAXM];<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;pos[MAXM],cp</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">,ans[MAXM],n,m;<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;mark[MAXM];<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">inline&nbsp;</span><span style="color: #0000ff;">bool</span><span style="color: #000000;">&nbsp;is_parted(rect</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;a,rect</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;b)<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;(a.x2</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">b.x1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;a.x1</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">b.x2&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;a.y2</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">b.y1&nbsp;</span><span style="color: #000000;">||</span><span style="color: #000000;">&nbsp;a.y1</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">b.y2);<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">}&nbsp;<br></span><span style="color: #008080;">18</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;Cut(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;p,rect&nbsp;cur)<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">{<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;(p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">cp)&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;">while</span><span style="color: #000000;">&nbsp;(&nbsp;p</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">cp&nbsp;</span><span style="color: #000000;">&amp;&amp;</span><span style="color: #000000;">&nbsp;is_parted(cur,q[pos[p]])&nbsp;)&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">p;<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;(p</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">cp)&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;<br></span><span style="color: #008080;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;rect&nbsp;ques</span><span style="color: #000000;">=</span><span style="color: #000000;">q[pos[p]];<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;area</span><span style="color: #000000;">=</span><span style="color: #000000;">(cur.y2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.y1</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;">(cur.x2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.x1</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(cur.x1</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ques.x1){&nbsp;<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;area</span><span style="color: #000000;">-=</span><span style="color: #000000;">(ques.x1</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.x1)</span><span style="color: #000000;">*</span><span style="color: #000000;">(cur.y2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.y1</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">28</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;rect&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">cur;<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cur.x1</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.x1;<br></span><span style="color: #008080;">30</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;temp.x2</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.x1</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">31</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Cut(p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,temp);<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">33</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(cur.x2</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">ques.x2){<br></span><span style="color: #008080;">34</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;area</span><span style="color: #000000;">-=</span><span style="color: #000000;">(cur.x2</span><span style="color: #000000;">-</span><span style="color: #000000;">ques.x2)</span><span style="color: #000000;">*</span><span style="color: #000000;">(cur.y2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.y1</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">35</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;rect&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">cur;<br></span><span style="color: #008080;">36</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cur.x2</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.x2;<br></span><span style="color: #008080;">37</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;temp.x1</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.x2</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">38</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Cut(p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,temp);<br></span><span style="color: #008080;">39</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">40</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(cur.y2</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">ques.y2){<br></span><span style="color: #008080;">41</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;area</span><span style="color: #000000;">-=</span><span style="color: #000000;">(cur.y2</span><span style="color: #000000;">-</span><span style="color: #000000;">ques.y2)</span><span style="color: #000000;">*</span><span style="color: #000000;">(cur.x2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.x1</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">42</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;rect&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">cur;<br></span><span style="color: #008080;">43</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cur.y2</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.y2;<br></span><span style="color: #008080;">44</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;temp.y1</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.y2</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">45</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Cut(p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,temp);<br></span><span style="color: #008080;">46</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">47</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(cur.y1</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">ques.y1){<br></span><span style="color: #008080;">48</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;area</span><span style="color: #000000;">-=</span><span style="color: #000000;">(ques.y1</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.y1)</span><span style="color: #000000;">*</span><span style="color: #000000;">(cur.x2</span><span style="color: #000000;">-</span><span style="color: #000000;">cur.x1</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br></span><span style="color: #008080;">49</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;rect&nbsp;temp</span><span style="color: #000000;">=</span><span style="color: #000000;">cur;<br></span><span style="color: #008080;">50</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cur.y1</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.y1;<br></span><span style="color: #008080;">51</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;temp.y2</span><span style="color: #000000;">=</span><span style="color: #000000;">ques.y1</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">52</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Cut(p</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">,temp);<br></span><span style="color: #008080;">53</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">54</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;ans[p]</span><span style="color: #000000;">+=</span><span style="color: #000000;">area;<br></span><span style="color: #008080;">55</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">56</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">57</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;">58</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">59</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">c.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;">60</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">c.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;">61</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(mark,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(mark));<br></span><span style="color: #008080;">62</span>&nbsp;<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;m;<br></span><span style="color: #008080;">63</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;">m;</span><span style="color: #000000;">++</span><span style="color: #000000;">i){<br></span><span style="color: #008080;">64</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;k,x,y,v;<br></span><span style="color: #008080;">65</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;k&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&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;v;<br></span><span style="color: #008080;">66</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;q[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">rect(x,</span><span style="color: #000000;">1</span><span style="color: #000000;">,y,v);<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;(k</span><span style="color: #000000;">==</span><span style="color: #000000;">2</span><span style="color: #000000;">){<br></span><span style="color: #008080;">68</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mark[i]</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">69</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pos[</span><span style="color: #000000;">++</span><span style="color: #000000;">cp]</span><span style="color: #000000;">=</span><span style="color: #000000;">i;<br></span><span style="color: #008080;">70</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">71</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">72</span>&nbsp;<span style="color: #000000;"><br></span><span style="color: #008080;">73</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(ans,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(ans));<br></span><span style="color: #008080;">74</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;">1</span><span style="color: #000000;">;<br></span><span style="color: #008080;">75</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;">m;</span><span style="color: #000000;">++</span><span style="color: #000000;">i){<br></span><span style="color: #008080;">76</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(mark[i])&nbsp;{&nbsp;</span><span style="color: #000000;">++</span><span style="color: #000000;">p;&nbsp;</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;&nbsp;}<br></span><span style="color: #008080;">77</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;Cut(p,q[i]);<br></span><span style="color: #008080;">78</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;}<br></span><span style="color: #008080;">79</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;">cp;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;ans[i]&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">80</span>&nbsp;<span style="color: #000000;">&nbsp;<br></span><span style="color: #008080;">81</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;">82</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">83</span>&nbsp;<span style="color: #000000;"></span></div>
<br><img src ="http://www.cppblog.com/3144046cjc/aggbug/91264.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-26 20:19 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/26/91264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TJU_OI 1140 箱里的钥匙</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91237.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Sun, 26 Jul 2009 04:43:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91237.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/91237.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/26/91237.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/91237.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/91237.html</trackback:ping><description><![CDATA[<h1>1140. &nbsp;箱里的钥匙</h1>
<div id="pmisc">
<table style="width: 371px; height: 74px;">
    <tbody>
        <tr>
            <td width="40%">
            输入文名：box.in&nbsp; <br>
            输出文名：box.out
            </td>
            <td style="text-align: right;">
            <a rel="nofollow" href="http://oi.tju.edu.cn/problem/submit/1140/">提交</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/community/board/3/">讨论</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/status?pid=1140">运行状况</a>&nbsp;
            </td>
        </tr>
    </tbody>
</table>
</div>
<hr>
<p>
有N个编号为1到N的箱子和N个编号为1到N的钥匙，第i号钥匙只能用来打开第i号箱子。现在我们随机地将一把钥匙锁进一个箱子里，即每个箱子里都恰好有
一把钥匙，保证所有的情况都等可能性地出现。现在你有M个炸弹，每个炸弹可以用来炸开一个箱子，一旦你把某个箱子打开，你就可以取出其中的钥匙，从而有可
能用这钥匙打开更多的箱子。你的策略很简单，当没有箱子可以打开时，随便选一个箱子，用炸弹炸开它，取出钥匙并继续打开尽可能多的箱子，直至没有箱子可以
打开，然后继续使用下一颗炸弹。
</p>
<p>
现给定N，你的任务是求出你可以取得所有钥匙的概率。这个概率必须输出成分数&#8220;A/B&#8221;的形式，A和B都是正整数且公约数必须为1。
</p>
<p><strong> 输入格式</strong> </p>
<p>
输入一行，包含空格隔开的两个数N和M
</p>
<p><strong> 输出格式</strong> </p>
<p>
输出为A/B的形式。
</p>
<p><strong> 输入样例</strong> </p>
<pre>3 1<br></pre>
<p><strong> 输出样例</strong> </p>
<pre>1/3<br></pre>
<p><strong> 数据规模与约定</strong> </p>
<p>
1 &#8804; N &#8804; 20, 1 &#8804; M &#8804; N
</p>
<span style="color: red;">解析</span>:<br>这个题目基本上就是一个数学题,涉及到第一类stirling数的求解.<br>所谓<span style="color: red;">第一类stirling数</span>,例如S[n,k]表示<span style="color: red;">将一个大小为n的集合分成k个部分,每个部分的元素个数不小于1,且形成环</span>的<span style="color: red;">总方法数</span>.<br>一个元素也算作单独的环.<br>容易的到<br>&nbsp;&nbsp;&nbsp; S[1,1]=1;<br>&nbsp;&nbsp;&nbsp; S[n,0]=0;<br>当n&lt;k时,S[n,k]=0;<br>对合法的n,k,满足: S[n,k]=S[n-1,k-1]+(n-1)*S[n-1,k];<br>把n当作钥匙(也即箱子)的个数,k为钥匙所放位置形成的"环",每破坏一个箱子,都可以得到该箱子所属环的所有钥匙,k表示实际的环的个数<br>当k&gt;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;"></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;">30</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;4</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;5</span>&nbsp;<span style="color: #000000;">T&nbsp;Gcd(T&nbsp;a,T&nbsp;b)<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;">return</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">!</span><span style="color: #000000;">a)</span><span style="color: #000000;">?</span><span style="color: #000000;">&nbsp;b&nbsp;:&nbsp;Gcd(b</span><span style="color: #000000;">%</span><span style="color: #000000;">a,a);<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;"><br></span><span style="color: #008080;">10</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;">11</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">12</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">box.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;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">box.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;">14</span>&nbsp;<span style="color: #000000;">&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;n,m,S[MAXN][MAXN];<br></span><span style="color: #008080;">15</span>&nbsp;<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;m;<br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;memset(S,</span><span style="color: #000000;">0</span><span style="color: #000000;">,</span><span style="color: #0000ff;">sizeof</span><span style="color: #000000;">(S));<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;S[</span><span style="color: #000000;">1</span><span style="color: #000000;">][</span><span style="color: #000000;">1</span><span style="color: #000000;">]</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">;<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;">2</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;</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;">1</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;">j)<br></span><span style="color: #008080;">20</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S[i][j]</span><span style="color: #000000;">=</span><span style="color: #000000;">S[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;">(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;">S[i</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">][j];<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&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;B</span><span style="color: #000000;">=</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;</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;">n;</span><span style="color: #000000;">++</span><span style="color: #000000;">i)&nbsp;B</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;</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</span><span style="color: #000000;">=</span><span style="color: #000000;">B;<br></span><span style="color: #008080;">24</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;">m</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)&nbsp;A</span><span style="color: #000000;">-=</span><span style="color: #000000;">S[n][i];<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&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;G</span><span style="color: #000000;">=</span><span style="color: #000000;">Gcd(A,B);<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&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;">G&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">'</span><span style="color: #000000;">/</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</span><span style="color: #000000;">/</span><span style="color: #000000;">G&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">27</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;">28</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;"></span></div>
<br>   <img src ="http://www.cppblog.com/3144046cjc/aggbug/91237.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-26 12:43 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/26/91237.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TJU_OI 1094 珍珠项链</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/22/90832.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Wed, 22 Jul 2009 07:15:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/22/90832.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90832.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/22/90832.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90832.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90832.html</trackback:ping><description><![CDATA[<br clear="all">
<h1>1094. &nbsp;珍珠项链</h1>
<div id="pmisc">
<table>
    <tbody>
        <tr>
            <td width="40%">
            输入文件名：necklace.in &nbsp; &nbsp; <br>
            输出文件名：necklace.out
            </td>
            <td style="text-align: right;">
            <a rel="nofollow" href="http://oi.tju.edu.cn/problem/submit/1094/">提交</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/community/board/3/">讨论</a>&nbsp;
            <a rel="nofollow" href="http://oi.tju.edu.cn/status?pid=1094">运行状况</a>&nbsp;
            </td>
        </tr>
    </tbody>
</table>
</div>
<hr>
<p>
有一串由n个珍珠组成的珍珠项链，珍珠的编号为1..n，每个珍珠都有各自的价值，我们用w[i]表示编号为i的珍珠的价值（注意：w[i]可以小于
零），已知这n个珍珠的价值量总和是n-1,现要求你在项链的某个位置断开，使得断开后的珍珠链满足对于任意k,前k个珍珠的价值量总和不超过k-1.
(对断开的一点说明, 如果在位置p断开, 那么得到的珍珠链将一定是p,p+1,...,n,1,2,...,p-1)
</p>
<p><strong> 输入格式</strong> </p>
<p>
输入文件的第一行有一个唯一的整数n,
</p>
<p>
接下来n个用空格和换行符隔开的整数分别表示w[1],w[2],...,w[n]
</p>
<p><strong> 输出格式</strong> </p>
<p>
如果无解请输出一行"Impossible"（不含引号）否则输出一个整数表示断开后的珍珠链第一个珍珠的编号
</p>
<p><strong> 输入样例</strong> </p>
<pre>5<br>1 1 1 1 0<br><br></pre>
<p><strong> 输出样例</strong> </p>
<pre>5<br><br></pre>
<p><strong> 数据规模与约定</strong> </p>
<p>
3&#8804;n&#8804;200,000 -1,000,000,000&#8804;w[i]&#8804;1,000,000,000
</p>
<p>
40%的测试数据满足n&#8804;1,000
</p>
<p><strong> 题目来源</strong> ：<a href="http://oi.tju.edu.cn/problem/source/28/">OIBH 信息学练习赛 #8</a></p>
<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;"></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;">200000</span><span style="color: #000000;">+</span><span style="color: #000000;">100</span><span style="color: #000000;">;<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #000000;"></span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">long</span><span style="color: #000000;">&nbsp;n,w[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;">&nbsp;5</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;6</span>&nbsp;<span style="color: #000000;">{<br></span><span style="color: #008080;">&nbsp;7</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">necklace.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;8</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">necklace.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;">&nbsp;9</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;">10</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;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;w[i],w[i</span><span style="color: #000000;">+</span><span style="color: #000000;">n]</span><span style="color: #000000;">=</span><span style="color: #000000;">w[i];<br></span><span style="color: #008080;">11</span>&nbsp;<span style="color: #000000;">&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;len</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></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;">n</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;">i)<br></span><span style="color: #008080;">13</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(tot</span><span style="color: #000000;">+</span><span style="color: #000000;">w[i]</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">len)&nbsp;tot</span><span style="color: #000000;">+=</span><span style="color: #000000;">w[i],</span><span style="color: #000000;">++</span><span style="color: #000000;">len;<br></span><span style="color: #008080;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br></span><span style="color: #008080;">16</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;tot</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;len</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;&nbsp;}<br></span><span style="color: #008080;">17</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(len</span><span style="color: #000000;">==</span><span style="color: #000000;">n)&nbsp;{&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">-</span><span style="color: #000000;">len</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;">&nbsp;endl;&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;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">19</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;">Impossible\n</span><span style="color: #000000;">"</span><span style="color: #000000;">;<br></span><span style="color: #008080;">20</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;">21</span>&nbsp;<span style="color: #000000;">}<br></span><span style="color: #008080;">22</span>&nbsp;<span style="color: #000000;">&nbsp;<br></span><span style="color: #008080;">23</span>&nbsp;<span style="color: #000000;"></span></div>
基本上,就是枚举珍珠,如果某个珍珠可以作为第一颗珍珠,那么接着把它的下一颗当作第二颗,如果合法,继续下一颗,如果不合法,直接把当前不合法的这一颗的下一颗当作第一颗继续枚举.<br>为什么挡当前的这颗珍珠在这个位置不行,就不用在别的位置尝试呢?这是因为<span style="color: red;">一旦某颗珍珠作为断掉之后的链第k颗不合法的话,它也一定不可能在当作第1、第2........或第k-1颗时合法</span>,略证如下:<br>若A[1],A[2],A[3]......A[k-1] 作为前(k-1)颗珍珠合法................................................................................(1)<br>而A[1]+A[2]+A[3]+......+A[k]&gt;k-1&nbsp;&nbsp; 不合法...........................................................................................(2)<br>那么我们有<br>A[t+1]+A[t+1]+......+A[k]&gt;k-1-(A[1]+A[2]+......+A[t])&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1&lt;=t&lt;k).............................................(3)<br>(1)==&gt; A[1]+A[2]+.......A[t]&lt;=t-1<br>所以由(3)知 A[t+1]+A[t+2]+......A[k]&gt;k-1-(t-1)=k-t...........................................................................(4)<br>而要想把A[t+1],A[t+2],.......A[k]当作第1,2,.........(k-t)颗珍珠且合法,必须有<br>A[t+1]+A[t+2]+.......A[k]&lt;=k-t-1&nbsp; (有k-t颗珠子)..................................................................................(5)<br>(4),(5)矛盾,所以红色部分得证.<br><br><img src ="http://www.cppblog.com/3144046cjc/aggbug/90832.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-22 15:15 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/22/90832.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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><item><title>没有写下去的欲望了</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/18/90437.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Sat, 18 Jul 2009 08:38:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/18/90437.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90437.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/18/90437.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90437.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90437.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C++,写写OI的东西现在是够了,也看了一些书,比如 Essential C++, Accelerate C++,我的目的倒也不是想达到什么高度,像Template,基本能用就行,类也只要有点概念,能看懂就够了.而在USACO上做这些已经做过的题目多少显得乏味,再者,由于脑子里留着对原来算法的印象,我的潜意识总是引导我直接默写.这样的coding绝对算不上一种享受.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以我打算挑几个题目做做,而不必机械式地重复,也可以去USACO上找些历次月赛的题目,金牌组的那些还是有点意思的,很多要求对高级数据结构进行改造,我以前做了几个题目,感觉收获极丰富,银牌组的也还比较有趣.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我的耐性真的不怎么样,Vijos上做了99题,TJU的网站上做了几十题,URAL上做了几十题,PKU做过一点,SPOJ也玩过一下,连郭佳宝同志的OJ上也切了一些题目,花样很多,可是没有一个题库上一百题的,耐性不够,也是程序员的大忌.&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; 所谓USACO,重走长征路,看来是要当逃兵了,或者,算是踩高跷,Accelerate?<br><br><img src ="http://www.cppblog.com/3144046cjc/aggbug/90437.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-18 16:38 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/18/90437.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>USACO 1.5.1 Number Triangles</title><link>http://www.cppblog.com/3144046cjc/archive/2009/07/17/90312.html</link><dc:creator>Chen Jiecao</dc:creator><author>Chen Jiecao</author><pubDate>Fri, 17 Jul 2009 03:18:00 GMT</pubDate><guid>http://www.cppblog.com/3144046cjc/archive/2009/07/17/90312.html</guid><wfw:comment>http://www.cppblog.com/3144046cjc/comments/90312.html</wfw:comment><comments>http://www.cppblog.com/3144046cjc/archive/2009/07/17/90312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/3144046cjc/comments/commentRss/90312.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/3144046cjc/services/trackbacks/90312.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;"><br></span><span style="color: #008080;">&nbsp;2</span>&nbsp;<span style="color: #008000;">ID:&nbsp;31440461<br></span><span style="color: #008080;">&nbsp;3</span>&nbsp;<span style="color: #008000;">LANG:&nbsp;C++<br></span><span style="color: #008080;">&nbsp;4</span>&nbsp;<span style="color: #008000;">TASK:&nbsp;numtri<br></span><span style="color: #008080;">&nbsp;5</span>&nbsp;<span style="color: #008000;"></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #008080;">&nbsp;6</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;7</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;8</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;">1000</span><span style="color: #000000;">+</span><span style="color: #000000;">10</span><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;data[</span><span style="color: #000000;">2</span><span style="color: #000000;">][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;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">numtri.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;">14</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;freopen(</span><span style="color: #000000;">"</span><span style="color: #000000;">numtri.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;">15</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;n,flg</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;cin&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;n;<br></span><span style="color: #008080;">17</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;">18</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">19</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;flg</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;">-</span><span style="color: #000000;">flg;<br></span><span style="color: #008080;">20</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;">1</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;">j)<br></span><span style="color: #008080;">21</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;{<br></span><span style="color: #008080;">22</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;">23</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;">24</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;data[flg][j]</span><span style="color: #000000;">=</span><span style="color: #000000;">max(data[</span><span style="color: #000000;">!</span><span style="color: #000000;">flg][j</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">],data[</span><span style="color: #000000;">!</span><span style="color: #000000;">flg][j])</span><span style="color: #000000;">+</span><span style="color: #000000;">x;<br></span><span style="color: #008080;">25</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">26</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;}<br></span><span style="color: #008080;">27</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;m</span><span style="color: #000000;">=</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br></span><span style="color: #008080;">28</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)&nbsp;m</span><span style="color: #000000;">=</span><span style="color: #000000;">max(m,data[flg][i]);<br></span><span style="color: #008080;">29</span>&nbsp;<span style="color: #000000;">&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;m&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;endl;<br></span><span style="color: #008080;">30</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;">31</span>&nbsp;<span style="color: #000000;">}&nbsp;<br></span><span style="color: #008080;">32</span>&nbsp;<span style="color: #000000;"></span></div>
<br><br><img src ="http://www.cppblog.com/3144046cjc/aggbug/90312.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-17 11:18 <a href="http://www.cppblog.com/3144046cjc/archive/2009/07/17/90312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>