<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beyond the Void &#187; 搜索</title>
	<atom:link href="http://www.byvoid.com/blog/tag/%e6%90%9c%e7%b4%a2/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.byvoid.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 29 Jun 2010 08:44:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>NOI 2000 解题报告</title>
		<link>http://www.byvoid.com/blog/noi-2000-solution/</link>
		<comments>http://www.byvoid.com/blog/noi-2000-solution/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 06:05:33 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[NOI]]></category>
		<category><![CDATA[2000]]></category>
		<category><![CDATA[BNF]]></category>
		<category><![CDATA[NOI2000]]></category>
		<category><![CDATA[Trie]]></category>
		<category><![CDATA[二次函数]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[巴科斯范式]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=931</guid>
		<description><![CDATA[NOI2000的题目是[瓷片项链][单词查找树][青蛙过河][程序分析器][古城之谜][算符破译]。[瓷片项链][单词查找树][青蛙过河][程序分析器]都是简单题，[古城之谜]难度一般，[算符破译]是较难。 [瓷... ]]></description>
			<content:encoded><![CDATA[<p>NOI2000的题目是[瓷片项链][单词查找树][青蛙过河][程序分析器][古城之谜][算符破译]。[瓷片项链][单词查找树][青蛙过河][程序分析器]都是简单题，[古城之谜]难度一般，[算符破译]是较难。</p>
<p>[瓷片项链]是简单的二次函数求最值的问题，数学方法可以直接解决。[单词查找树]是一种基本的字符串处理的数据结构。[青蛙过河]是一个递归的数学问题，可以求出直接的公式。[程序分析器]是个模拟题，需要细心。[古城之谜]是个动态规划问题，但是需要对题意尤其是对范式的深入分析。[算符破译]是个较难的搜索题，需要大量剪枝和优化。<br />
<span id="more-931"></span></p>
<p><strong>[瓷片项链]</strong></p>
<p>看似送分的题，有些细节需要注意。不建议枚举保留最大值，因为精度误差不可避免，容易出问题。</p>
<ul>
<li>总体积为Vt，每片损耗为V0，设烧制x片</li>
<li>则每片体积 V=Vt/x 应满足V&gt;V0 即x&lt;Vt/V0</li>
<li>直径 D=0.3 * sqrt(V-V0)</li>
<li>总长度
<ul>
<li>L=x*D</li>
<li>=x * 0.3 * sqrt(Vt/x-V0)</li>
<li>=0.3 *sqrt( Vt * x &#8211; V0 * x^2 )</li>
</ul>
</li>
</ul>
<p>根号内部是一个二次函数，求其最值即可。当L取到最大值，有x=V/(2*V0)。</p>
<p>无解的条件是x的小数部分为0.5。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code7'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9317"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
</pre></td><td class="code" id="p931code7"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 ring
 * Author: Guo Jiabao
 * Time: 2009.3.8 17:11
 * State: Solved
 * Memo: 二次函数最值
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Vt,V0,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">double</span> x,dx<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ring.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;ring.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>Vt,<span style="color: #000040;">&amp;</span>V0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	dx<span style="color: #000080;">=</span><span style="color: #0000dd;">floor</span><span style="color: #008000;">&#40;</span>x<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span><span style="color: #008000;">&#41;</span>Vt<span style="color: #000040;">/</span>V0<span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>x<span style="color: #000040;">-</span>dx<span style="color: #000080;">==</span><span style="color:#800080;">0.5</span><span style="color: #008000;">&#41;</span> Ans<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> Ans<span style="color: #000080;">=</span>dx<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[单词查找树]</strong></p>
<p>如果学过Trie，这道题太简单了，只需在创建新节点时计数即可。就算没有学过Trie，通过定义和样例也一样能看懂，很容易搞定。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code8'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9318"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
</pre></td><td class="code" id="p931code8"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 trie
 * Author: Guo Jiabao
 * Time: 2009.3.8 17:44
 * State: Solved
 * Memo: 单词查找树 Trie
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">struct</span> TTrie
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">struct</span> Trie_node
	<span style="color: #008000;">&#123;</span>
		Trie_node <span style="color: #000040;">*</span>c<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">26</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		Trie_node<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
	Trie_node <span style="color: #000040;">*</span>root<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> cnt<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span>Trie_node <span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span>p,<span style="color: #0000ff;">char</span> <span style="color: #000040;">*</span>s<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span> p<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> Trie_node<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>,cnt<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>s<span style="color: #008000;">&#41;</span> ins<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008000;">&#91;</span><span style="color: #000040;">*</span>s<span style="color: #000040;">-</span><span style="color: #FF0000;">'A'</span><span style="color: #008000;">&#93;</span>,s<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>Trie<span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">char</span> Word<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">70</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;trie.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;trie.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,Word<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
		Trie.<span style="color: #007788;">ins</span><span style="color: #008000;">&#40;</span>Trie.<span style="color: #007788;">root</span>,Word<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Trie.<span style="color: #007788;">cnt</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[青蛙过河]</strong></p>
<p>在NOI冬令营上，吴文虎教授曾经多次把这道题当作递归思想的例题讲授。我想这道题很不错，需要一定的数学思维。</p>
<p>首先简化问题，考虑没有石墩的情况。我们设F[s,y]表示有s个石墩和y片荷叶，最多能跳过的青蛙个数。</p>
<p>显然F[0,0]=1，F[0,1]=2，F[0,2]=3，&#8230;，可以归纳出F[0,y]=y+1。理解就是先把y只青蛙放在每片荷叶上，让最后一只直接跳过去，然后荷叶上的青蛙依次跳过去。</p>
<p>如果有石墩，假设有两个石墩S1,S2。可以分两步考虑，首先对于A,S1,S2，对于这个系统，让A的一半青蛙跳到S2。然后对于 A,S1,D这个系统，把A的剩余青蛙跳到D。最后对于S1,S2,D这个系统，把S2的青蛙跳到D。这样恰好 F[2,0]=F[1,0]+F[1,0]。</p>
<p>更一般的，F[s,y]=F[s,y]*2 (s&gt;0)，再加上F[0,y]=y+1这个关系，可以很容易地递推出了。实际上F[s,y]可以找到直接的公式，不难证明，即F[s,y]=(y+1)*2^s。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code9'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p9319"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
</pre></td><td class="code" id="p931code9"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 frog
 * Author: Guo Jiabao
 * Time: 2009.3.9 20:00
 * State: Solved
 * Memo: 递归F[s,y]=F[s-1,y]*2 F[0,y]=y+1
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> s,y<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;frog.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;frog.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>s,<span style="color: #000040;">&amp;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,<span style="color: #008000;">&#40;</span>y<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&lt;&lt;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[程序分析器]</strong></p>
<p>这道题就是一个模拟，只要能看懂范式就行了。由于有大量的访问，建议按行号排序后使用链表+哈希。</p>
<p>对于不能正常结束的问题，有这几种情况</p>
<ul>
<li>跳转到了一个未定义的行</li>
<li>执行完了最后一条语句，没有遇到End</li>
<li>死循环</li>
</ul>
<p>前两个还好判断，死循环比较棘手。事实上死循环是被证明不可判定的，对于这道题，我的方法是记录如果执行次数大于10000000，就当作死循环终止，这显然是不完备的，但是可以通过所有测试点。</p>
<p>另外NOI原数据的最后一组答案是错的，应该是5099760。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code10'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93110"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
</pre></td><td class="code" id="p931code10"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 analyser
 * Author: Guo Jiabao
 * Time: 2009.3.9 21:49
 * State: Solved
 * Memo: BNF模拟
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXS<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span>,MAXL<span style="color: #000080;">=</span><span style="color: #0000dd;">3001</span>,PLUS<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,PRINT<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span>,GO<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span>,IFGO<span style="color: #000080;">=</span><span style="color: #0000dd;">3</span>,END<span style="color: #000080;">=</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> statement
<span style="color: #008000;">&#123;</span>
	statement <span style="color: #000040;">*</span>next<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> line,var,value,goline,type<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>L<span style="color: #008000;">&#91;</span>MAXS<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
statement <span style="color: #000040;">*</span>Skip<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,l,cnt<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Vars<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">30</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>statement <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>line<span style="color: #000040;">-</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>statement <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>line<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> l,i<span style="color: #008080;">;</span><span style="color: #0000ff;">char</span> C<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;analyser.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;analyser.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>l<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		L<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">line</span><span style="color: #000080;">=</span>l<span style="color: #008080;">;</span>
		l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,C<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'?'</span><span style="color: #008000;">&#41;</span> <span style="color: #666666;">//print</span>
		<span style="color: #008000;">&#123;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">var</span><span style="color: #000080;">=</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'A'</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">type</span><span style="color: #000080;">=</span>PRINT<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'+'</span><span style="color: #008000;">&#41;</span> <span style="color: #666666;">//plus</span>
		<span style="color: #008000;">&#123;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">var</span><span style="color: #000080;">=</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'A'</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">type</span><span style="color: #000080;">=</span>PLUS<span style="color: #008080;">;</span>
			<span style="color: #0000dd;">sscanf</span><span style="color: #008000;">&#40;</span>C<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span>,<span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>l<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span><span style="color: #000080;">=</span>l<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'O'</span><span style="color: #008000;">&#41;</span> <span style="color: #666666;">//GO</span>
		<span style="color: #008000;">&#123;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">type</span><span style="color: #000080;">=</span>GO<span style="color: #008080;">;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>l<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">goline</span><span style="color: #000080;">=</span>l<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>C<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'F'</span><span style="color: #008000;">&#41;</span> <span style="color: #666666;">//IF</span>
		<span style="color: #008000;">&#123;</span>
			l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">type</span><span style="color: #000080;">=</span>IFGO<span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">var</span><span style="color: #000080;">=</span>l<span style="color: #000040;">-</span><span style="color: #FF0000;">'A'</span><span style="color: #008080;">;</span>
			l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>l<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">value</span><span style="color: #000080;">=</span>l<span style="color: #008080;">;</span>
			l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>l<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//&lt;S&gt;GO&lt;S&gt;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>l<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">goline</span><span style="color: #000080;">=</span>l<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
			L<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">type</span><span style="color: #000080;">=</span>END<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>L<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,N,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>,cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		L<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		Skip<span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">line</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Skip<span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">line</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> execute<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>statement <span style="color: #000040;">*</span>p<span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>p<span style="color: #008080;">;</span>cnt<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>cnt<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">10000000</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>type<span style="color: #000080;">==</span>PLUS<span style="color: #008000;">&#41;</span>
			Vars<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>var<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>type<span style="color: #000080;">==</span>END<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>type<span style="color: #000080;">==</span>GO<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			p<span style="color: #000080;">=</span>Skip<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>goline<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>type<span style="color: #000080;">==</span>IFGO <span style="color: #000040;">&amp;&amp;</span> Vars<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>var<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>value<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			p<span style="color: #000080;">=</span>Skip<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>goline<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		p<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>execute<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>cnt<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,cnt<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[古城之谜]</strong></p>
<p>做出这道题关键在于理解语法。其中名词短语和动词短语给出的都是递归定义，可以转化为更直观的，&lt;名词短语&gt; ::= {&lt;辅词&gt;} &lt;名词&gt;，&lt;动词短语&gt; ::= {&lt;辅词&gt;} &lt;动词&gt;，也就是以一个名词或动词结尾，前面可以加上任意多个辅词。而句子就是要以名词短语开头，后面的名词短语和动词短语交错出现。</p>
<p>分析出语法结构，可以动态规划。定义词性j={0,1,2,3}。j=0表示该词为一个名词，j=1表示该词为一个动词，j=2表示该词为一个辅词，且在它前面的最近的非辅词为名词，j=3表示该词为一个辅词，且在它前面的最近的非辅词为动词。</p>
<p><strong>状态设定</strong></p>
<ul>
<li>F[i,j,k]表示，前i个字母，末尾单词词性为j，组成第k个句子的最少单词数。文章长度为M。</li>
</ul>
<p><strong>状态转移方程</strong></p>
<p>满足文章中第[a+1,i]可以匹配一个单词，则可以状态转移。i-L&lt;=a&lt;=i-1 且 a&gt;=0，L为所有单词最大长度。</p>
<ul>
<li>如果匹配的单词为名词</li>
</ul>
<p>F[i,0,k]=Min { 	F[a,j,k] + 1 | j=1或j=3, 	F[a,j,k-1] + 1 | j=0或j=1 }</p>
<ul>
<li>如果匹配的单词为动词</li>
</ul>
<p>F[i,1,k]=Min { 	F[a,j,k] + 1 | j=0或j=2 }</p>
<ul>
<li>如果匹配的单词为辅词</li>
</ul>
<p>F[i,2,k]=Min { 	F[a,j,k] + 1 | j=0或j=2 }</p>
<p>F[i,3,k]=Min { 	F[a,j,k] + 1 | j=1或j=3, 	F[a,j,k-1] + 1 | j=0或j=1 }</p>
<p><strong>边界条件</strong></p>
<ul>
<li>F[0,0,0]=0</li>
</ul>
<p><strong>目标结果</strong></p>
<p>找到最小的k，使得Min{F[M,0,k],F[M,1,k]}有意义，则最小的句子数为k，单词数为Min{F[M,0,k],F[M,1,k]}。</p>
<p>时间复杂度为O(N*M*L)，匹配单词的时候可以用Trie树，第三维状态可以使用滚动数组。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code11'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93111"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
</pre></td><td class="code" id="p931code11"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 lostcity
 * Author: Guo Jiabao
 * Time: 2009.3.11 14:00
 * State: Solved
 * Memo: 动态规划
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">1001</span>,MAXL<span style="color: #000080;">=</span><span style="color: #0000dd;">22</span>,MAXM<span style="color: #000080;">=</span><span style="color: #0000dd;">5002</span>,IMP<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> TTrie
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">struct</span> Trie_node
	<span style="color: #008000;">&#123;</span>
		Trie_node <span style="color: #000040;">*</span>c<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">26</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">int</span> Wm<span style="color: #008080;">;</span>
		Trie_node<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">:</span>Wm<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>c<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
	Trie_node <span style="color: #000040;">*</span>root<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">void</span> ins<span style="color: #008000;">&#40;</span>Trie_node <span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span>p,<span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>S,<span style="color: #0000ff;">int</span> L,<span style="color: #0000ff;">int</span> Wm<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span> p<span style="color: #000080;">=</span><span style="color: #0000dd;">new</span> Trie_node<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>L<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Wm<span style="color: #000040;">|</span><span style="color: #000080;">=</span>Wm<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> ins<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008000;">&#91;</span><span style="color: #000040;">*</span>S<span style="color: #008000;">&#93;</span>,S<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,L<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,Wm<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">int</span> find<span style="color: #008000;">&#40;</span>Trie_node <span style="color: #000040;">*</span>p,<span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>S,<span style="color: #0000ff;">int</span> L<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>L<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>Wm<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> find<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008000;">&#91;</span><span style="color: #000040;">*</span>S<span style="color: #008000;">&#93;</span>,S<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,L<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>Trie<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,MaxL,Ans1,Ans2<span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> Word<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,Passage<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> W<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,P<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>,Mat<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,len,type<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;lostcity.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;lostcity.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,Word<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		len<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>Word<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>len<span style="color: #000080;">&gt;</span>MaxL<span style="color: #008000;">&#41;</span> MaxL<span style="color: #000080;">=</span>len<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>len<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			W<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Word<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'a'</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Word<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'n'</span><span style="color: #008000;">&#41;</span>
			type<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Word<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'v'</span><span style="color: #008000;">&#41;</span>
			type<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			type<span style="color: #000080;">=</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
		Trie.<span style="color: #007788;">ins</span><span style="color: #008000;">&#40;</span>Trie.<span style="color: #007788;">root</span>,W<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,len,type<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,Passage<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	M<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>Passage<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		P<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Passage<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'a'</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>MaxL<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			Mat<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> Min<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span><span style="color: #0000ff;">return</span> a<span style="color: #000080;">&lt;</span>b<span style="color: #008080;">?</span>a<span style="color: #008080;">:</span>b<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k,p<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>p<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>p<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>IMP<span style="color: #008080;">;</span>
	F<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span>p<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>k<span style="color: #000040;">++</span>,p<span style="color: #000080;">=</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>IMP<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&gt;=</span>i<span style="color: #000040;">-</span>MaxL <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Mat<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
					Mat<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Trie.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>Trie.<span style="color: #007788;">root</span>,P<span style="color: #000040;">+</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,i<span style="color: #000040;">-</span>j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">int</span> Wm<span style="color: #000080;">=</span>Mat<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Wm<span style="color: #000040;">&amp;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Wm<span style="color: #000040;">&amp;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Wm<span style="color: #000040;">&amp;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		Ans2<span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>M<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>M<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ans2<span style="color: #000080;">&lt;</span>IMP<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span> k<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Ans1<span style="color: #000080;">=</span>dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn%dn&quot;</span>,Ans1,Ans2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[算符破译]</strong></p>
<p>相当变态的搜索题，目前还没能在1s内AC。</p>
<p>基本思路是先确定等号的位置，然后搜索+*的位置，最后往空档中填数。我写了400多行的程序，最大的数据还是5s才能过。继续研究。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p931code12'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p93112"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
</pre></td><td class="code" id="p931code12"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI2000 equation
 * Author: Guo Jiabao
 * Time: 2009.3.11 21:12
 * State: half-done
 * Memo: 搜索优化
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXL<span style="color: #000080;">=</span><span style="color: #0000dd;">12</span>,MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">1001</span>,LETTER<span style="color: #000080;">=</span><span style="color: #0000dd;">15</span>,LT<span style="color: #000080;">=</span><span style="color: #0000dd;">13</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> EQUAL<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,PLUS<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">2</span>,MULTIPLY<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">3</span>,NO<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">4</span>,UND<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">5</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> equation
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> len<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> s<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>E<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> adjl<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> adjm<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> ce<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span><span style="color: #666666;">//可以为等号的字母</span>
<span style="color: #0000ff;">bool</span> op<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span>,appear<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">100</span><span style="color: #008000;">&#93;</span>,ava<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span>,Noway<span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> used<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span>,opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Mapp<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span>,Sp<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N<span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>equation <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>len<span style="color: #000040;">-</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>equation <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>len<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> Max<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> a<span style="color: #000080;">&gt;</span>b<span style="color: #008080;">?</span>a<span style="color: #008080;">:</span>b<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> te<span style="color: #008000;">&#91;</span>LETTER<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> W<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>adjm,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>adjm<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;equation.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;equation.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		ce<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,W<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>W<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>te,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>te<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>W<span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			ava<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000040;">!</span><span style="color: #000080;">=</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008000;">&#41;</span>
				te<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
				adjm<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>adjm<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		adjm<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>adjm<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		adjm<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>adjm<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>te<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
			ce<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>LT<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>adjm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				adjl<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span>adjl<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
		Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>UND<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	op<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>E<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,N,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>E<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>,cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> debug<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,c<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			c<span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span> c<span style="color: #000040;">+</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'='</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>PLUS<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'+'</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>MULTIPLY<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'*'</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c&quot;</span>,c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;n&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;n&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solution<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #666666;">//debug();</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>UND<span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			appear<span style="color: #008000;">&#91;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>NO<span style="color: #008080;">;</span>
				appear<span style="color: #008000;">&#91;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> compute<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>P,<span style="color: #0000ff;">int</span> L<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> stack<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,top<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>L<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			stack<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>MULTIPLY<span style="color: #008000;">&#41;</span>
			stack<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>stack<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span>P<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #008080;">;</span>top<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>top<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
		stack<span style="color: #008000;">&#91;</span>top<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>stack<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> stack<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> makeequation<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,v<span style="color: #008080;">;</span>
	L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>P,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		v<span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span><span style="color: #0000dd;">10</span><span style="color: #000040;">+</span>v<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
		<span style="color: #008000;">&#123;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> check<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	makeequation<span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> fillequation<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p,<span style="color: #0000ff;">int</span> f<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,v<span style="color: #008080;">;</span>
	L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>P,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		v<span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>f<span style="color: #000080;">=</span><span style="color: #0000dd;">10</span><span style="color: #000040;">-</span>f<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span><span style="color: #0000dd;">10</span><span style="color: #000040;">+</span>f<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
		<span style="color: #008000;">&#123;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> limit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		fillequation<span style="color: #008000;">&#40;</span>i,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//左小右大</span>
		R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		fillequation<span style="color: #008000;">&#40;</span>i,<span style="color: #0000dd;">9</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #666666;">//左大右小</span>
		R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>compute<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>R<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> computelen<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> <span style="color: #000040;">*</span>P,<span style="color: #0000ff;">int</span> L,<span style="color: #0000ff;">int</span> <span style="color: #000040;">&amp;</span>a,<span style="color: #0000ff;">int</span> <span style="color: #000040;">&amp;</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> stacka<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,stackb<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,top<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>L<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			stacka<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			stackb<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>MULTIPLY<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			stacka<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>stacka<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>P<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			stackb<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>stackb<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #008080;">;</span>top<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>top<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		stacka<span style="color: #008000;">&#91;</span>top<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Max<span style="color: #008000;">&#40;</span>stacka<span style="color: #008000;">&#91;</span>top<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,stacka<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		stackb<span style="color: #008000;">&#91;</span>top<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Max<span style="color: #008000;">&#40;</span>stackb<span style="color: #008000;">&#91;</span>top<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,stackb<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	a<span style="color: #000080;">=</span>stacka<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>b<span style="color: #000080;">=</span>stackb<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> lenequation<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,v,l0,l1,r0,r1<span style="color: #008080;">;</span>
	L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>P,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		v<span style="color: #000080;">=</span>Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> v<span style="color: #000080;">==</span>UND<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
		<span style="color: #008000;">&#123;</span>
			P<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>L<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	computelen<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>,l0,r0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	computelen<span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,L<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,l1,r1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #000040;">!</span><span style="color: #008000;">&#40;</span>r0<span style="color: #000080;">&lt;</span>l1 <span style="color: #000040;">||</span> r1<span style="color: #000080;">&lt;</span>l0<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> possible<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>lenequation<span style="color: #008000;">&#40;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> search_number<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p,<span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span><span style="color: #666666;">//第p个等式 第k个字符</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,C<span style="color: #000080;">=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> rfs,lfs<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ava<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span><span style="color: #008000;">&#40;</span>Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>NO<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&gt;</span>LT<span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000080;">&gt;</span>N<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		Noway<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		solution<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	rfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	lfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Mapp<span style="color: #008000;">&#91;</span>C<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>rfs <span style="color: #000040;">&amp;&amp;</span> lfs<span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>Mapp<span style="color: #008000;">&#91;</span>C<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>UND <span style="color: #000040;">&amp;&amp;</span> k<span style="color: #000080;">&lt;=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		C<span style="color: #000080;">=</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">--</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		rfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		lfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Mapp<span style="color: #008000;">&#91;</span>C<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>rfs <span style="color: #000040;">&amp;&amp;</span> lfs<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>check<span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			search_number<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,E<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">9</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		rfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		lfs<span style="color: #000080;">=</span> k<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>E<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#91;</span>k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>UND<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>rfs <span style="color: #000040;">&amp;&amp;</span> lfs<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		Mapp<span style="color: #008000;">&#91;</span>C<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		search_number<span style="color: #008000;">&#40;</span>p,k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Mapp<span style="color: #008000;">&#91;</span>C<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>UND<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> search_operator<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>ava<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> Mapp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>UND<span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> k<span style="color: #000080;">&lt;=</span>LT<span style="color: #008000;">&#41;</span> k<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">&gt;</span>LT<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>possible<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> limit<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			search_number<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>,E<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>adjl<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		j<span style="color: #000080;">=</span>adjl<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>op<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&gt;</span>adjl<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
			op<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
				Mapp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>PLUS<span style="color: #008080;">;</span>
				search_operator<span style="color: #008000;">&#40;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
				Mapp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>MULTIPLY<span style="color: #008080;">;</span>
				search_operator<span style="color: #008000;">&#40;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				opu<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			op<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
			Mapp<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>UND<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	search_operator<span style="color: #008000;">&#40;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ce<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>adjm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			op<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>EQUAL<span style="color: #008080;">;</span>
			search_operator<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			Mapp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>UND<span style="color: #008080;">;</span>
			op<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,ud<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,j,other<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>UND<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			ud<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			j<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>appear<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			other<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>LT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ud<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> i<span style="color: #000080;">==</span>j<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">int</span> c<span style="color: #000080;">=</span>other<span style="color: #000040;">-</span><span style="color: #0000dd;">10</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'='</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>PLUS<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'+'</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span>MULTIPLY<span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #FF0000;">'*'</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> c<span style="color: #000040;">-</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'+'</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c%cn&quot;</span>,i<span style="color: #000040;">+</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>UND <span style="color: #000040;">||</span> Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>NO <span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>EQUAL<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c=n&quot;</span>,i<span style="color: #000040;">+</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>PLUS<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c+n&quot;</span>,i<span style="color: #000040;">+</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>MULTIPLY<span style="color: #008000;">&#41;</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c*n&quot;</span>,i<span style="color: #000040;">+</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%c%dn&quot;</span>,i<span style="color: #000040;">+</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,Sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Noway<span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;nowayn&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<blockquote>
<h2><span class="mw-headline">瓷片项链 </span></h2>
<p>原始部落用一种稀有的泥土烧制直径相同的圆瓷片并串成项链，串的时候沿瓷片的直径方向顺次连接，瓷片之间没有空隙也不重叠，一条项链至少由一个瓷片构成。</p>
<p>每个烧制的瓷片厚度是一定的，直径D和所用泥土的体积V有以下关系：</p>
<p>D=0.3*(V-V0)^0.5 (V&gt;V0)</p>
<p>其中V0为烧制每一片的损耗，单位与V相同。当用料小于等于V0时，不能烧制成瓷片。</p>
<p>例： V总 = 10，V0 = 1，若烧制成一片瓷片，V = V总= 10，D = 0.9。如果把泥土均分成2份，每份泥土的体积为V = V总/2 = 5，单个瓷片的直径为 ,串起来的总长为1.2。</p>
<p>给定了泥土的总体积和烧制单个瓷片的损耗，烧制的瓷片数不同，能够得到的项链总长度也不相同，请计算烧制多少个瓷片能使所得到的项链最长。</p>
<p>[输入文件]</p>
<p>文件仅有两行，每一行仅包含一个整数和一个换行/回车符。第一行的数字为泥土总体积V总 (0&lt;V总&lt;60000)，第二行为烧制单个瓷片的损耗V0(0&lt; V0&lt;600)。</p>
<p>[输出文件]</p>
<p>文件中仅包含一个数字和一个换行/回车符。该数字为能获得最长项链而烧制的瓷片数。如果不能烧制成瓷片或者最优解不唯一（存在两个或者两个以上方案均能获得最长项链），输出数字0。</p>
<p>[输入输出文件样例1]</p>
<p>Input</p>
<pre>10
1</pre>
<p>Output</p>
<pre>5</pre>
<p>[输入输出文件样例2]</p>
<p>Input</p>
<pre>10
2</pre>
<p>Output</p>
<pre>0</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">单词查找树 </span></h2>
<p>在进行文法分析的时候，通常需要检测一个单词是否在我们的单词列表里。为了提高查找和定位的速度，通常都要画出与单词列表所对应的单词查找树，其特点如下：</p>
<ul>
<li>根节点不包含字母，除根节点外每一个节点都仅包含一个大写英文字母；</li>
<li>从根节点到某一节点，路径上经过的字母依次连起来所构成的字母序列，称为该节点对应的单词。单词列表中的每个词，都是该单词查找树某个节点所对应的单词；</li>
<li>在满足上述条件下，该单词查找树的节点数最少。</li>
</ul>
<p>单词列表对应的单词查找树</p>
<pre>A
AN
ASP
AS
ASC
ASCII
BAS
BASIC
<a class="image" title="Image:Trie.gif" href="http://www.ruvtex.cn/wiki/Image:Trie.gif"><img longdesc="/wiki/Image:Trie.gif" src="http://www.ruvtex.cn/mw/images/3/3e/Trie.gif" alt="Image:Trie.gif" width="258" height="370" /></a></pre>
<p>对一个确定的单词列表，请统计对应的单词查找树的节点数（包括根节点）</p>
<p>[输入文件]</p>
<p>该文件为一个单词列表，每一行仅包含一个单词和一个换行/回车符。每个单词仅由大写的英文字符组成，长度不超过63个字符。文件总长度不超过32K，至少有一行数据。</p>
<p>[输出文件]</p>
<p>该文件中仅包含一个整数和一个换行/回车符。该整数为单词列表对应的单词查找树的节点数。</p>
<p>[输入输出文件样例]</p>
<p>Input</p>
<pre>A
AN
ASP
AS
ASC
ASCII
BAS
BASIC</pre>
<p>Output</p>
<pre>13</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">青蛙过河 </span></h2>
<p>大小各不相同的一队青蛙站在河左岸的石墩（记为A）上，要过到对岸的石墩(记为D)上去。河心有几片菏叶(分别记为Y1…Ym)和几个石墩(分别记为S1…Sn)。图示如下：</p>
<p><a class="image" title="Image:Frog.gif" href="http://www.ruvtex.cn/wiki/Image:Frog.gif"><img longdesc="/wiki/Image:Frog.gif" src="http://www.ruvtex.cn/mw/images/9/99/Frog.gif" alt="Image:Frog.gif" width="402" height="206" /></a></p>
<p>青蛙的站队和移动方法规则如下：</p>
<ol>
<li>每只青蛙只能站在荷叶、石墩，或者仅比它大一号的青蛙背上（统称为合法的落脚点）；</li>
<li>一只青蛙只有背上没有其它青蛙的时候才能够从一个落脚点跳到另一个落脚点；</li>
<li>青蛙允许从左岸A直接跳到河心的石墩、荷叶和右岸的石墩D上，允许从河心的石墩和荷叶跳到右岸的石墩D上；</li>
<li>青蛙在河心的石墩之间、荷叶之间以及石墩和荷叶之间可以来回跳动；</li>
<li>青蛙在离开左岸石墩后，不能再返回左岸；到达右岸后，不能再跳回；</li>
<li>假定石墩承重能力很大，允许无论多少只青蛙都可呆在上面。但是，由于石墩的面积不大，至多只能有一只青蛙直接站在上面，而其他的青蛙只能依规则1落在比它大一号的青蛙的背上。</li>
<li>荷叶不仅面积不大，而且负重能力也有限，至多只能有一只青蛙站在上面。</li>
<li>每一步只能移动一只青蛙，并且移动后需要满足站队规则；</li>
<li>在一开始的时候，青蛙均站在A上，最大的一只青蛙直接站在石墩上，而其它的青蛙依规则6站在比其大一号的青蛙的背上。</li>
</ol>
<p>青蛙希望最终能够全部移动到D上，并完成站队。</p>
<p>设河心有m片荷叶和n个石墩，请求出这队青蛙至多有多少只，在满足站队和移动规则的前提下，能从A过到D。</p>
<p>例如，在m=1且 n=1时，河心有一片荷叶（Y1）和一个石墩（S1），此时至多有4只青蛙能够过河（由小到大称为1、2、3、4），过河的一种方法为：</p>
<table class="MsoNormalTable" style="border: medium none ; border-collapse: collapse;" border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td style="border: 1pt solid windowtext; padding: 0cm 5.4pt; width: 50.4pt;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span style="font-family: 宋体;">开始</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: 1pt 1pt 1pt medium solid solid solid none windowtext windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> </span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: 1pt 1pt 1pt medium solid solid solid none windowtext windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">2</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 1</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">1 from A   to Y<sub>1</sub></span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">2</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4             1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A       S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 2</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">2 from A   to S<sub>1</sub></span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4      2     1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 3</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">1 from Y<sub>1</sub> to S<sub>1</sub></span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3      1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4       2</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 4</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3 from A   to Y<sub>1</sub></span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4      2     3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 5</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">4 from A   to D</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 2     3     4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 6</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">3 from Y<sub>1</sub> to D</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 1           3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 2           4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 7 </span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">1 from S<sub>1</sub> to Y<sub>1</sub></span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 2     1     4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 8</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">2 from S<sub>1</sub> to D</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 88.2pt;"><span lang="EN-US">2</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 88.2pt;"><span lang="EN-US">3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 1     4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A       S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
<tr>
<td style="padding: 0cm 5.4pt; width: 50.4pt; border: medium 1pt 1pt none solid solid -moz-use-text-color windowtext windowtext;" width="67" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">Step 9</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 3cm; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="113" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">1 from Y<sub>1</sub> to D</span></p>
</td>
<td style="padding: 0cm 5.4pt; width: 119.35pt; border: medium 1pt 1pt medium none solid solid none -moz-use-text-color windowtext windowtext -moz-use-text-color;" width="159" valign="top">
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 1</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 2</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 3</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US"> 4</span></p>
<p class="MsoBodyTextIndent" style="text-indent: 0cm;"><span lang="EN-US">A      S<sub>1</sub> Y<sub>1</sub> D</span></p>
</td>
</tr>
</tbody>
</table>
<p>此例中，当河心有一片荷叶和一个石墩时，4只青蛙能够跳动9步过河。</p>
<p>[输入文件]</p>
<p>文件仅有两行，每一行仅包含一个整数和一个换行/回车符。第一行的数字为河心的石墩数n（0&lt;=n&lt;=25），第二行为荷叶数m（0&lt;=m&lt;=25）。</p>
<p>[输出文件]</p>
<p>文件中仅包含一个数字和一个换行/回车符。该数字为在河心有n个石墩和m片荷叶时，最多能够过河的青蛙的只数。</p>
<p>[输入输出文件样例]</p>
<p>Input</p>
<pre>1
1</pre>
<p>Output</p>
<pre>4</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">程序分析器 </span></h2>
<p>Tiny Basm语言(简称为TB语言)的巴科斯-瑙尔范式(BNF)为：</p>
<ul>
<li>&lt;程序&gt;		::= &lt;语句&gt; [CrLf] { &lt;语句&gt; [CrLf] }</li>
<li>&lt;语句&gt;		::= &lt;行号&gt; [Space] &lt;语句体&gt;</li>
<li>&lt;语句体&gt;	::= &lt;累加语句&gt; | &lt;输出语句&gt; | &lt;转移语句&gt; | &lt;条件语句&gt; | &lt;结束语句&gt;</li>
<li>&lt;累加语句&gt;	::= &lt;变量&gt; + &lt;整数&gt;</li>
<li>&lt;输出语句&gt;	::= &lt;变量&gt; ?</li>
<li>&lt;转移语句&gt;	::= GO [Space] &lt;行号&gt;</li>
<li>&lt;条件语句&gt;	::= IF [Space] &lt;变量&gt; = &lt;整数&gt; [Space] &lt;转移语句&gt;</li>
<li>&lt;结束语句&gt;	::= END</li>
<li>&lt;变量&gt;		::= &lt;字母&gt;</li>
<li>&lt;行号&gt;		::= &lt;整数&gt;</li>
<li>&lt;整数&gt;		::= &lt;数字&gt; { &lt;数字&gt; }</li>
<li>&lt;字母&gt;		::= A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z</li>
<li>&lt;数字&gt;		::= 0|1|2|3|4|5|6|7|8|9</li>
</ul>
<p>注：其中“::=”表示定义为，“|”表示或，{}内的项可以重复任意多次或不出现，“[Space]”表示空格(一个字符，ASCII码为32)，“[CrLf]”表示回车/换行(两个字符，ASCII码分别为13和10)。</p>
<p>错误语句示例(在输入文件中不会出现任何错误语句)： 10[Space]A+1.5                    （不符合累加语句的定义，所加的不是整数） 20[Space]A[Space]?                      （不符合输出语句的定义，多加了一个空格） 30[Space]IF[Space]A=B[Space]GO[Space]10             （不符合条件语句的定义，不应变量=变量）</p>
<p>TB程序的执行：</p>
<ul>
<li>程序从行号最小的一条语句开始执行，在未遇到条件语句时按行号由小至大顺序执行。</li>
<li>所有变量在程序执行前被自动初始化为0。</li>
<li>累加语句将语句中变量的值加上语句中的整数送回该变量。</li>
<li>输出语句将语句中变量的值在监视器上显示出来。</li>
<li>执行条件语句时，当且仅当该语句中的变量与紧跟在等号后面的整数值相等，后面的转移语句才被执行。该语句中的所有整数值至多为4位。</li>
<li>转移语句被执行后，程序将转去执行GO后面指定的行号的语句。</li>
<li>当程序执行结束语句后，结束整个程序的执行。</li>
<li>假设该系统能处理任意大小的整数，而不会发生溢出。</li>
</ul>
<p>请编程，对于给定的TB语言程序P，求该程序所执行的语句数(执行条件语句不论是否成功转移，仅记为执行一条语句)。</p>
<p>[输入文件]</p>
<ul>
<li>输入文件为一个TB语言程序P，语句数不超过100行。</li>
<li>P中每条语句的长度不超过20个字符。</li>
<li>P中转移语句里GO后面的行号一定有对应的语句。</li>
<li>P中可能有多个不同行号的结束语句。</li>
<li>P中行号最大的语句一定是结束语句。</li>
<li>P中的行号都不大于3000。</li>
<li>输入文件不一定是按行号递增顺序给出P的。</li>
</ul>
<p>[输出文件]</p>
<ul>
<li>输出文件有且仅有一行：</li>
<li>如果程序能够正常结束，输出该程序所执行的语句数；</li>
<li>如果程序不能正常结束，输出-1。</li>
</ul>
<p>[输入输出文件样例] Input</p>
<pre>10 A+1
20 IF A=5 GO 60
60 END
30 A+2
40 A?
50 GO 20</pre>
<p>Output</p>
<pre>11</pre>
<p>[样例说明] 执行语句行号按顺序为 10-&gt;20-&gt;30-&gt;40-&gt;50-&gt;20-&gt;30-&gt;40-&gt;50-&gt;20-&gt;60 共11条语句被执行。</p></blockquote>
<blockquote>
<h2><span class="mw-headline">古城之谜 </span></h2>
<p>著名的考古学家石教授在云梦高原上发现了一处古代城市遗址。让教授欣喜的是在这个他称为冰峰城(Ice-Peak City)的城市中有12块巨大石碑，上面刻着用某种文字书写的资料，他称这种文字为冰峰文。然而当教授试图再次找到冰峰城时，却屡屡无功而返。</p>
<p>幸好当时教授把石碑上的文字都拍摄了下来，为了解开冰峰城的秘密，教授和他的助手牛博士开始研究冰峰文，发现冰峰文只有陈述句这一种句型和名词(n)、动词(v)、辅词(a)这三类单词，且其文法很简单：</p>
<ul>
<li>&lt;文章&gt;		::= &lt;句子&gt; { &lt;句子&gt; }</li>
<li>&lt;句子&gt;		::= &lt;陈述句&gt;</li>
<li>&lt;陈述句&gt;    ::=	&lt;名词短语&gt; { &lt;动词短语&gt; &lt;名词短语&gt; } [ &lt;动词短语&gt; ]</li>
<li>&lt;名词短语&gt;	::=	&lt;名词&gt; | [ &lt;辅词&gt; ] &lt;名词短语&gt;</li>
<li>&lt;动词短语&gt;	::=	&lt;动词&gt; | [ &lt;辅词&gt; ] &lt;动词短语&gt;</li>
<li>&lt;单词&gt;		::=	&lt;名词&gt; | &lt;动词&gt; | &lt;辅词&gt;</li>
</ul>
<p>注：其中&lt;名词&gt;、&lt;动词&gt;和&lt;辅词&gt;由词典给出，“::=”表示定义为，“|”表示或，{}内的项可以重复任意多次或不出现，[]内的项可以出现一次或不出现。</p>
<p>在研究了大量资料后，他们总结了一部冰峰文词典，由于冰峰文恰好有26个字母，为了研究方便，用字母a到z表示它们。</p>
<p>冰峰文在句子和句子之间以及单词和单词之间没有任何分隔符，因此划分单词和句子令石教授和牛博士感到非常麻烦，于是他们想到了使用计算机来 帮助解决这个问题。假设你接受了这份工作，你的第一个任务是写一个程序，将一篇冰峰文文章划分为最少的句子，在这个前提下，将文章划分为最少的单词。</p>
<p>[输入文件]</p>
<ul>
<li>输入文件第1行为词典中的单词数n（n&lt;=1000）。</li>
<li>输入文件第2行至第(n+1)行每行表示一个单词，形为“α.mot”， α表示词性，可能是n(名词),v（动词）,a（辅词）中的一个，mot为单词，单词的长度不超过20。拼写相同而词性不同的单词视为不同的单词，如输入 示例中的n.kick与v.kick是两个不同的单词。</li>
<li>输入文件第(n+2)行为需要划分的文章，以“.”结束。</li>
<li>输入文件中的文章确保为冰峰文。文章是由有限个句子组成的，每个句子只包含有限个单词。文章长度不超过5KB。</li>
</ul>
<p>[输出文件]</p>
<ul>
<li>输出文件为两行，每行一个整数。</li>
<li>输出文件第1行为划分出来的句子数。</li>
<li>输出文件第2行为划分出来的单词数。</li>
</ul>
<p>[输入输出文件样例]</p>
<p>Input</p>
<pre>11
n.table
n.baleine
a.silly
n.snoopy
n.sillysnoopy
v.is
v.isnot
n.kick
v.kick
a.big
v.cry
sillysnoopyisnotbigtablebaleinekicksnoopysillycry.</pre>
<p>Output</p>
<pre>2
9</pre>
<p>[样例说明]</p>
<p>（为了阅读方便，划分的单词用空格分隔，在单词右标出它的词性，每行写一个句子，用句号表示句子结束。）</p>
<p>输出对应的划分：</p>
<pre>sillysnoopy[n] isnot[v] big[a] table[n].
baleine[n] kick[v] snoopy[n] silly[a] cry[v].</pre>
<p>如果用下面的划分：</p>
<pre>silly[a] snoopy[n] isnot[v] big[a] table[n].
baleine[n] kick[v] snoopy[n] silly[a] cry[v].</pre>
<p>则划分的句子数仍为2个，但单词数却多了1个，为10个，显然应该按前者而不是后者划分。</p></blockquote>
<blockquote>
<h2><span class="mw-headline">算符破译 </span></h2>
<p>考古学发现，几千年前古梅文明时期的数学非常的发达，他们懂得多位数的加法和乘法，其表达式和运算规则等都与现在通常所用的方式完全相同（如整数是 十进制，左边是高位，最高位不能为零；表达式为中缀运算，先乘后加等），唯一的区别是其符号的写法与现在不同。有充分的证据表明，古梅文明的数学文字一共 有13个符号，与 0,1,2,3,4,5,6,7,8,9,+,*,= 这13个数字和符号（称为现代算符）一一对应。为了便于标记，我们用13个小写英文字母a,b,…m代替这些符号（称为古梅算符）。但是，还没有人知道这 些古梅算符和现代算符之间的具体对应关系。 在一个石壁上，考古学家发现了一组用古梅算符表示的等式，根据推断，每行有且仅有一个等号，等号左右两边为运算表达式（只含有数字和符号），并且等号两边 的计算结果相等。</p>
<p>假设这组等式是成立的，请编程序破译古梅算符和现代算符之间的对应关系。</p>
<p>[输入文件]</p>
<ul>
<li>输入文件的第一行为等式的个数N（1&lt;=N&lt;=1000），以下N行每行为一个等式。</li>
<li>每个等式的长度为5个字符到11个字符。</li>
</ul>
<p>[输出文件]</p>
<ul>
<li>如果不存在对应关系能够满足这组等式，输出“noway”和一个换行/回车符。</li>
<li>如果有对应关系能够满足这组等式，输出所有能够确定的古梅算符和现代算符的对应关系。每一行有两个字符，其中第一个字符是古梅算符，第二个字符是对应的现代算符。输出按照字典顺序排序。</li>
</ul>
<p>[输入输出文件样例]</p>
<p>Input</p>
<pre>2
abcdec
cdefe</pre>
<p>Output</p>
<pre>a6
b*
d=
f+</pre>
<p>[样例说明]</p>
<p>在上例中，可能对应的现代表达式为{6*2=12，2=1+1}，{6*4=24，4=2+2}，{6*8=48，8=4+4}。可见，能 够确定的对应关系只有a对应6，b对应*，d对应=，f对应+，应该输出；而{c,e}虽然能够找到对应的现代算符使得等式成立，但没有唯一的对应关系， 不能输出。其他古梅算符{g,h…m}完全不能确定，也不能输出。</p></blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/noi-1997-solution/" title="NOI 1997 解题报告">NOI 1997 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-2001-solution/" title="NOI 2001 解题报告">NOI 2001 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-1998-solution/" title="NOI 1998 解题报告">NOI 1998 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-1999-solution/" title="NOI 1999 解题报告">NOI 1999 解题报告</a></li><li><a href="http://www.byvoid.com/blog/poi-2000-pow/" title="POI 2000 Repetitions 最长公共子串">POI 2000 Repetitions 最长公共子串</a></li><li><a href="http://www.byvoid.com/blog/poi-2000-nar/" title="POI 2000 Skiers 滑雪队">POI 2000 Skiers 滑雪队</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/noi-2000-solution/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>NOI 1998 解题报告</title>
		<link>http://www.byvoid.com/blog/noi-1998-solution/</link>
		<comments>http://www.byvoid.com/blog/noi-1998-solution/#comments</comments>
		<pubDate>Mon, 23 Feb 2009 12:30:19 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[NOI]]></category>
		<category><![CDATA[1998]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[并行计算]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[最短路径]]></category>
		<category><![CDATA[贪心]]></category>
		<category><![CDATA[随机]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=892</guid>
		<description><![CDATA[这是NOI计划的第二份题解。NOI1998的6道题是[个人所得税][免费馅饼][围巾裁剪][SERNET模拟][软件安装盘][并行计算]，相对于NOI1997要稍难一些，不过还都是可以接受的。 [个人所得税]是一个简单题... ]]></description>
			<content:encoded><![CDATA[<p>这是<a href="http://www.byvoid.com/blog/noi-plan/" target="_blank">NOI计划</a>的第二份题解。<strong>NOI1998</strong>的6道题是[个人所得税][免费馅饼][围巾裁剪][SERNET模拟][软件安装盘][并行计算]，相对于NOI1997要稍难一些，不过还都是可以接受的。</p>
<p>[个人所得税]是一个简单题，[免费馅饼][围巾裁剪]是基本的动态规划问题，难度都还算容易。[SERNET模拟]涉及到了图论的最短路算法构造，需要稍稍思考。[软件安装盘]是一个比较困难的搜索题，目前还没有较好的方法。[并行计算]用了随机+贪心的方法，细节非常多，构造也不是很容易。</p>
<p>做这些题花了我8天时间，主要原因是在[并行计算]上浪费了过多的时间，接下来要掌握节奏。</p>
<p><span id="more-892"></span><strong>[个人所得税]</strong></p>
<p>这是最简单的题了，注意读懂题意，按照规则模拟就行了。一次性收入直接统计，按月收入要先把每个人的每月收入统计出，最后计算。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code19'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89219"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
</pre></td><td class="code" id="p892code19"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 personaltax
 * Author: Guo Jiabao
 * Time: 2009.2.17 14:03
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
&nbsp;
<span style="color: #0000ff;">double</span> income<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> s<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">double</span> w<span style="color: #000080;">=</span>s<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">4000</span><span style="color: #008000;">&#41;</span>
		w<span style="color: #000040;">-</span><span style="color: #000080;">=</span><span style="color: #0000dd;">800</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		w<span style="color: #000040;">*</span><span style="color: #000080;">=</span><span style="color:#800080;">0.8</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">20000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> w<span style="color: #000040;">*</span><span style="color:#800080;">0.2</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">50000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">4000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">20000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.3</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">4000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">9000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">50000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.4</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">double</span> wage<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> s<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">double</span> w<span style="color: #000080;">=</span>s<span style="color: #000040;">-</span><span style="color: #0000dd;">800</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">500</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> w<span style="color: #000040;">*</span><span style="color:#800080;">0.05</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">2000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">500</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">5000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">2000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.15</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">20000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">5000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.2</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">40000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">20000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.25</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">60000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">5000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">40000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.3</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">80000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">5000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">6000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">60000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.35</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>w<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">100000</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">5000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">6000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">7000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">80000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.40</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">25</span><span style="color: #000040;">+</span><span style="color: #0000dd;">150</span><span style="color: #000040;">+</span><span style="color: #0000dd;">450</span><span style="color: #000040;">+</span><span style="color: #0000dd;">3000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">5000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">6000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">7000</span><span style="color: #000040;">+</span><span style="color: #0000dd;">8000</span><span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>w<span style="color: #000040;">-</span><span style="color: #0000dd;">100000</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.45</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> pm<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">50001</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">13</span><span style="color: #008000;">&#93;</span>,M<span style="color: #008080;">;</span>
<span style="color: #0000ff;">double</span> Total<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">char</span> c,ct<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> i,j,id,month,t,s<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;personaltax.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;personaltax.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Total<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #FF0000;">'#'</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s%d%d&quot;</span>,ct,<span style="color: #000040;">&amp;</span>id,<span style="color: #000040;">&amp;</span>month<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>t,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>ct<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'I'</span><span style="color: #008000;">&#41;</span>
			Total<span style="color: #000040;">+</span><span style="color: #000080;">=</span>income<span style="color: #008000;">&#40;</span>s<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			pm<span style="color: #008000;">&#91;</span>id<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>month<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>s<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">do</span> c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">||</span> c<span style="color: #000080;">==</span><span style="color: #0000dd;">13</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">ungetc</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">12</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			Total<span style="color: #000040;">+</span><span style="color: #000080;">=</span>wage<span style="color: #008000;">&#40;</span>pm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%.2lfn&quot;</span>,Total<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[免费馅饼]</strong></p>
<p>很明显的动态规划，但是要注意细节。“开始时游戏者站在舞台的正中央”，“当馅饼在某一秒末恰好到达游戏者所在的格子中，游戏者就收集到了这块馅饼。”对于每个馅饼，只有恰好到达才算能接住，也就是如果(高度-1)能够整除下落速度，才可以被接到。</p>
<p>明确题意以后，首先预处理出每个馅饼的落地时间，落地时间相同的馅饼可以合并为一个。定义V[i,j]为时间为i秒时，恰好落到地上第j格的馅饼总价值。</p>
<p>状态设定</p>
<ul>
<li>F[i,j]表示第i秒游戏者在第j格时的最大得分。</li>
</ul>
<p>状态转移方程</p>
<pre>F[i,j]=Max
{
	F[i-1,j-2];
	F[i-1,j-1];
	F[i-1,j];
	F[i-1,j+1];
	F[i-1,j+2];
} + V[i,j];</pre>
<p>同时要记录每个状态的转移来源，以输出每秒的策略。</p>
<p>初始状态</p>
<ul>
<li>F[i,j]=负无穷大</li>
<li>F[0,(W+1)/2]=0 或者如果第0秒就能接到馅饼的价值</li>
</ul>
<p>目标状态</p>
<ul>
<li>Max{F[i,j]}</li>
</ul>
<p>时间复杂度 O(W*T)</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code20'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89220"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
</pre></td><td class="code" id="p892code20"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 freepizza
 * Author: Guo Jiabao
 * Time: 2009.2.21 14:19
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXT<span style="color: #000080;">=</span><span style="color: #0000dd;">1001</span>,MAXW<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> W,H,N,T,Ans,AT,AP<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> F<span style="color: #008000;">&#91;</span>MAXT<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXW<span style="color: #008000;">&#93;</span>,V<span style="color: #008000;">&#91;</span>MAXT<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXW<span style="color: #008000;">&#93;</span>,G<span style="color: #008000;">&#91;</span>MAXT<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXW<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,t,p,v,s,dt<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;freepizza.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;freepizza.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>W,<span style="color: #000040;">&amp;</span>H<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>t,<span style="color: #000040;">&amp;</span>p,<span style="color: #000040;">&amp;</span>v,<span style="color: #000040;">&amp;</span>s<span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>H<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span>v<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> t<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			dt<span style="color: #000080;">=</span>t<span style="color: #000040;">+</span><span style="color: #008000;">&#40;</span>H<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span>v<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>dt<span style="color: #000080;">&gt;</span>T<span style="color: #008000;">&#41;</span> T<span style="color: #000080;">=</span>dt<span style="color: #008080;">;</span>
			V<span style="color: #008000;">&#91;</span>dt<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>s<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>T<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>W<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			F<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF<span style="color: #008080;">;</span>
	p<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>W<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
	Ans<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>T<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>W<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&lt;=</span>W <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #000080;">&lt;=</span>W <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>Ans<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				Ans<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				AT<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
				AP<span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,Ar<span style="color: #008000;">&#91;</span>MAXT<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>AT,j<span style="color: #000080;">=</span>AP<span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		Ar<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		j<span style="color: #000040;">-</span><span style="color: #000080;">=</span>G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>T<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> Ans<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;0n&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>AT<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ar<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[围巾裁剪]</strong></p>
<p>这道题的方法是动态规划，由于要解决寻找两个子三角形的面积和最大，我们可以先简化问题，就是找一个最大的。</p>
<p>找一个最大的子三角形，要分为正着和倒着两种情况。对于正着放的情况，设定状态F[i,j]表示以第i行第j列的三角形为上顶点的子三角形的最大高度。</p>
<p>状态转移方程就是</p>
<pre>F[i,j]=
{
	0; //(i,j)被标记为不可用
	1; //(i+1,j) (i+1,j+1) (i+1,j+2) 至少有一个不在界限内或者被标记为不可用
	Min { F[i+1,j] , F[i+1,j+2] } + 1; //不符合以上两个情况
}</pre>
<p>对于倒着放的情况，设定状态G[i,j]表示以第i行第j列的三角形为下顶点的子三角形的最大高度。</p>
<pre>G[i,j]=
{
	0; //(i,j)被标记为不可用
	1; //(i-1,j) (i-1,j-1) (i-1,j-2) 至少有一个不在界限内或者被标记为不可用
	Min { G[i-1,j] , G[i-1,j-2] } + 1; //不符合以上两个情况
}</pre>
<p>上述简化的问题的答案就是Max{ Max{F[i,j]^2},Max{G[i,j]^2} }。</p>
<p>考虑找两个和最大三角形，没有局部最优策略可供利用，不能直接动态规划。于是可以想到枚举分割线，把图形分成一个小三角形和一个梯形，但后分别在两个区域内动态规划，求出两个区域内的值的和的最大值即可。</p>
<p>分割线枚举有三个方向，要O(N)次枚举分割，所以总的时间复杂度为O(N^3)。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code21'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89221"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
</pre></td><td class="code" id="p892code21"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 scarfcut
 * Author: Guo Jiabao
 * Time: 2009.2.18 20:05
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,dev,dm,NewAns,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> F<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> forbid<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,x,y<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;scarfcut.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;scarfcut.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>N,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>x,<span style="color: #000040;">&amp;</span>y<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		forbid<span style="color: #008000;">&#91;</span>x<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>y<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> Min<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> a<span style="color: #000080;">&lt;</span>b<span style="color: #008080;">?</span>a<span style="color: #008080;">:</span>b<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> area<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> a<span style="color: #000080;">&gt;</span>N <span style="color: #000040;">||</span> b<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> b<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>a<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>dm<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> a<span style="color: #000080;">&lt;=</span>dev<span style="color: #008080;">?</span><span style="color: #0000dd;">1</span><span style="color: #008080;">:</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>dm<span style="color: #000080;">==</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> b<span style="color: #000080;">&lt;=</span>dev<span style="color: #008080;">?</span><span style="color: #0000dd;">1</span><span style="color: #008080;">:</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000080;">&gt;=</span>N<span style="color: #000040;">-</span>dev<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> b<span style="color: #000080;">&lt;=</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000040;">-</span><span style="color: #008000;">&#40;</span>N<span style="color: #000040;">-</span>dev<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">?</span><span style="color: #0000dd;">1</span><span style="color: #008080;">:</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,o,b,M1<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,M2<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>N<span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		o<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>o<span style="color: #008080;">;</span>j<span style="color: #000040;">+</span><span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			b<span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>forbid<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,j<span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> , F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>M1<span style="color: #008000;">&#41;</span>
				M1<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>M2<span style="color: #008000;">&#41;</span>
				M2<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		o<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #000040;">*</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>o<span style="color: #008080;">;</span>j<span style="color: #000040;">+</span><span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			b<span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i,j<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>forbid<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> b<span style="color: #000040;">!</span><span style="color: #000080;">=</span>area<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,j<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #000040;">||</span> forbid<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Min<span style="color: #008000;">&#40;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span> , F<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span> <span style="color: #000040;">+</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>M1<span style="color: #008000;">&#41;</span>
				M1<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>M2<span style="color: #008000;">&#41;</span>
				M2<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> M1<span style="color: #000040;">*</span>M1<span style="color: #000040;">+</span>M2<span style="color: #000040;">*</span>M2<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>dm<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>dm<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>dm<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>dev<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>dev<span style="color: #000080;">&lt;=</span>N<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>dev<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			NewAns<span style="color: #000080;">=</span>dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>NewAns<span style="color: #000080;">&gt;</span>Ans<span style="color: #008000;">&#41;</span>
				Ans<span style="color: #000080;">=</span>NewAns<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[SERNET模拟]</strong></p>
<p>不能直接模拟数据包传输，必须采用更好的算法。由于每个数据包之间没有任何影响，我们可以把它们独立开来看。对于一个数据包，定义它在网络中持续到的时刻是last，那么在时刻T后还存在于网络中的充分必要条件是last&gt;T。</p>
<p>设一个数据包的起始点是Start，目标点是Target，发出时间是Stime。 由于每个节点不会再发送已经接受过数据包，设想一下数据包的传输，我们可以想到信号最先到达点的时间一定是延最短路径传播的。每个节点只会转发一次同一个 数据包，以后接受的都会吸收，所以数据包的在网络中最大持续时间一定与最短路径有关，而且还取决于每个节点连出的最长边。总而言之，持续时间为从起始点 Start出发的到顶点i最短路径的长度与连出i的最长边的最大值。</p>
<p>于是，我们定义以点Start出发的到点i的最短路径是shortest[i]，从点i出发的最长边是far[i]，注意far[Target]=0。则有</p>
<ul>
<li>last=Max{shortest[i]+far[i]} + Stime</li>
</ul>
<p>根据上述式子，只需对每个数据包求一次单源最短路即可。由于单元最短路算法使用的不同，定义SSSP(N,M)为N个顶点，M条边单源最短路算法的 时间复杂度，例如Floyd(N,M)=O(N^3)，朴素的Dijkstra(N,M)=O(N^2)。所以总的时间复杂度为 O(K*SSSP(N,M))。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code22'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89222"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
</pre></td><td class="code" id="p892code22"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 sernet
 * Author: Guo Jiabao
 * Time: 2009.2.23 13:25
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span>,MAXK<span style="color: #000080;">=</span><span style="color: #0000dd;">10001</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> packet
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> id,s,t,stime<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>P<span style="color: #008000;">&#91;</span>MAXK<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,K,S,T,dia,QuestTime,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> mapping<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,adjm<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,dist<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,farest<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,a,b,v<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;sernet.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;sernet.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		mapping<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			adjm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
		adjm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>a,<span style="color: #000040;">&amp;</span>b,<span style="color: #000040;">&amp;</span>v<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		a<span style="color: #000080;">=</span>mapping<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>b<span style="color: #000080;">=</span>mapping<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">&gt;</span>farest<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> farest<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>v<span style="color: #000080;">&gt;</span>farest<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> farest<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
		adjm<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>adjm<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>K<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>K<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span>,<span style="color: #000040;">&amp;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">stime</span>,<span style="color: #000040;">&amp;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span>,<span style="color: #000040;">&amp;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">t</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>QuestTime<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> floyd<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>adjm<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">==</span>S <span style="color: #000040;">||</span> k<span style="color: #000080;">==</span>T<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">==</span>T<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">==</span>S<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>dist<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
					dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>dist<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	i<span style="color: #000080;">=</span>S<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>j <span style="color: #000040;">&amp;&amp;</span> i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>T <span style="color: #000040;">&amp;&amp;</span> j<span style="color: #000040;">!</span><span style="color: #000080;">=</span>S <span style="color: #000040;">&amp;&amp;</span> dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>INF<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			k<span style="color: #000080;">=</span>farest<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">==</span>T<span style="color: #008000;">&#41;</span> k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> k<span style="color: #000080;">&gt;</span>dia<span style="color: #008000;">&#41;</span>
				dia<span style="color: #000080;">=</span>dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> k<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>K<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		S<span style="color: #000080;">=</span>mapping<span style="color: #008000;">&#91;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">s</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>T<span style="color: #000080;">=</span>mapping<span style="color: #008000;">&#91;</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">t</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		dia<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		floyd<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">int</span> last<span style="color: #000080;">=</span>dia<span style="color: #000040;">+</span>P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">stime</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>last<span style="color: #000080;">&gt;</span>QuestTime<span style="color: #008000;">&#41;</span>
			Ans<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[软件安装盘]</strong></p>
<p>这是一个比较令人头痛的问题，对于极端的数据，目前还没有能够保证正确性的有效的算法。我的算法是搜索+卡时，我的算法可以使最优解在前1秒的搜索内有较大的出现的概率，但还是不能保证一定正确。</p>
<p>首先拓扑排序一下，保证每个组件的依赖出现在这个组件之前。按照组件的顺序搜索，枚举每个可以放置的安装盘。要满足安装盘空间足够，而且安装盘的编号大于等于所依赖的所有组件的位置的最大值。搜索中如果发现当前需要的安装盘的个数大于已知最优解，可以剪枝。</p>
<p>北极天南星大牛给出了一种贪心的优化搜索的方法，但是仍不能保证其正确性。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code23'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89223"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
</pre></td><td class="code" id="p892code23"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 software
 * Author: Guo Jiabao
 * Time: 2009.2.22 21:23
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #339900;">#include &lt;ctime&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> module
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> size,rcnt,acnt<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> affect<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> rely<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>md<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,Space,Ans<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span>,Lim,st<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> position<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,used<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,Ansp<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,Start<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;software.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;software.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>Space,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">13</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">13</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span><span style="color: #008000;">&#40;</span>c<span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'0'</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">||</span> c<span style="color: #000080;">==</span><span style="color: #0000dd;">13</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">ungetc</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">rely</span><span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">rcnt</span> <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">rcnt</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			md<span style="color: #008000;">&#91;</span> md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">rely</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">affect</span><span style="color: #008000;">&#91;</span> md<span style="color: #008000;">&#91;</span> md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">rely</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">acnt</span> <span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		Start<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	st<span style="color: #000080;">=</span><span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>Ans<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		A<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		A<span style="color: #008000;">&#91;</span> Ansp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> <span style="color: #000040;">++</span>A<span style="color: #008000;">&#91;</span> Ansp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>Ans<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;</span>A<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d &quot;</span>,A<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,A<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">exit</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> dfs<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> k,<span style="color: #0000ff;">int</span> pcnt<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #0000dd;">time</span><span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span>st<span style="color: #008000;">&#41;</span>
		print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> i,j,start<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span>,b<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">&gt;</span>N<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pcnt<span style="color: #000080;">&lt;</span>Ans<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			Ans<span style="color: #000080;">=</span>pcnt<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
				Ansp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>position<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>Start<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>Lim <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>b <span style="color: #000040;">&amp;&amp;</span> i<span style="color: #000080;">&lt;</span>Ans<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>md<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #000080;">&gt;</span>Space<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">continue</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&gt;</span>pcnt<span style="color: #008000;">&#41;</span>
			pcnt<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			b<span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>md<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008080;">;</span>
		position<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">acnt</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			A<span style="color: #008000;">&#91;</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">affect</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Start<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">affect</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>Start<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				Start<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>A<span style="color: #008000;">&#91;</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">affect</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		dfs<span style="color: #008000;">&#40;</span>k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,pcnt<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>md<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">acnt</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			Start<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>A<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">=</span>md<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">size</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	Lim<span style="color: #000080;">=</span>N<span style="color: #008080;">;</span>
	dfs<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[并行计算]</strong></p>
<p>很强悍的题，随机+贪心。首先是建立一棵表达式树，方法是从右向左扫描式子，遇到最低级的运算符就把式子分为左右两部分，递归进入扫描，建成一棵表达式树。</p>
<p>表达式树的每个节点可能是一个值也可能是运算符，每个节点要存储其父节点的运算符号op，最初的叶节点都是字母。定义每个节点的ftime 为可使用的时刻，address为存储的地址。定义R[i](i=1,2)为运算器i上次运算完成后的时刻，初始R[1]=R[2]=0。</p>
<p>基本的算法是，每次随机找出一对可合并节点(a,b)，将这两个节点合并，尽量使用R[p]较小的运算器p，必须满足 max{a.ftime,b.ftime}&lt;=R[p] ，如果不满足，则使用另一个（两者必有其一满足）。直到合并完所有的节点，根节点的ftime值就是总时间。重复上述过程1000次以上，保留最后时间最 小的解，最后能给出稳定的接近最优的解，实际上是最优解的概率已经很大。</p>
<p>合并实质就是计算a [b.op] b，方法是把计算后的新地址放到a节点处，然后把b删除（实际上为了保护树的结构不需要真正删除，只需标记“已被删除”）。重要的是，删除后要收缩孤立 点，孤立点就是没有兄弟的叶节点，用孤立点取代其父亲节点。当b就是a的兄弟节点，这时a已经成了孤立点，收缩a。如果b不是a的兄弟节点，且b的兄弟节 点是一个叶节点，此时b的兄弟节点成为了孤立点，收缩b的兄弟节点。</p>
<p>对于收缩节点p，检查p是否已经没有兄弟节点，令p取代其父节点的ftime和address值，然后删除p，访问p的父亲，继续检查，知道p已经有兄弟节点，或者已经到了根节点。</p>
<p>可合并的点对(a,b)并不是任意的，必须满足a和b在同一运算优先级的区间内，在表达式树中的表示就是a,b之间的路径不能跨越不同优先 级的运算符的节点。a和b显然必须是叶节点，其中a还应该满足a是其父亲的左子节点或者a.op为+或*。在随机选取a，b时，可以先从叶节点中随机取出 一个节点，另其为b，然后从b出发搜索出与b在同一运算优先级区间内所有的节点的集合，然后在此集合中随机取出a即可。</p>
<p>该算法的时间复杂度为O(K*N^2)，K为重复贪心的次数，是常数，N为表达式中字母个数(N&lt;=100)。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p892code24'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p89224"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
</pre></td><td class="code" id="p892code24"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1998 parallel
 * Author: Guo Jiabao
 * Time: 2009.2.20 21:52
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXP<span style="color: #000080;">=</span><span style="color: #0000dd;">1000</span>,MAXL<span style="color: #000080;">=</span><span style="color: #0000dd;">300</span>,MAX_Repeat<span style="color: #000080;">=</span><span style="color: #0000dd;">1000</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> et_node
<span style="color: #008000;">&#123;</span>
	et_node <span style="color: #000040;">*</span>left,<span style="color: #000040;">*</span>right,<span style="color: #000040;">*</span>brother,<span style="color: #000040;">*</span>father<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> v<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> ftime,address,op,id<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> is_left<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> instruct
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> Time,Alu,Op,A1,A2,A3<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> Solution
<span style="color: #008000;">&#123;</span>
	instruct I<span style="color: #008000;">&#91;</span>MAXP<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> eadd,etime,IC<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Len,EC<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,Acnt,SC,Lcnt,opdevide,SAC<span style="color: #008080;">;</span>
<span style="color: #0000ff;">char</span> Ex<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> usedletter<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #008000;">&#93;</span>,vis<span style="color: #008000;">&#91;</span>MAXP<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> lt2add<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">300</span><span style="color: #008000;">&#93;</span>,bk<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,RT<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span>,T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">5</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
et_node ES<span style="color: #008000;">&#91;</span>MAXP<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>root,<span style="color: #000040;">*</span>S<span style="color: #008000;">&#91;</span>MAXP<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>SA<span style="color: #008000;">&#91;</span>MAXP<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
Solution Best,Current<span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,Lv<span style="color: #008000;">&#91;</span>MAXL<span style="color: #008000;">&#93;</span>,Lp<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;parallel.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;parallel.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d%dn%s&quot;</span>,<span style="color: #000040;">&amp;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>,<span style="color: #000040;">&amp;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>,<span style="color: #000040;">&amp;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span>,<span style="color: #000040;">&amp;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span>,Ex<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Len<span style="color: #000080;">=</span><span style="color: #0000dd;">strlen</span><span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>Lp<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>Len<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		usedletter<span style="color: #008000;">&#91;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'('</span><span style="color: #008000;">&#41;</span>
			Lv<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>Lp<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">')'</span><span style="color: #008000;">&#41;</span>
			bk<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Lv<span style="color: #008000;">&#91;</span>Lp<span style="color: #000040;">--</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Lcnt<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #FF0000;">'A'</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'Z'</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>usedletter<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			lt2add<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">++</span>Lcnt<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> getoperator<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> s<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'+'</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>s<span style="color: #000080;">==</span><span style="color: #FF0000;">'*'</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">void</span> addshrink<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>a<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	S<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>SC<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">void</span> delshrink<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>a<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> k<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>SC<span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>a<span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
	S<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>S<span style="color: #008000;">&#91;</span>SC<span style="color: #000040;">--</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> et_node<span style="color: #000040;">*</span> et_new<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #000040;">++</span>EC<span style="color: #008080;">;</span>
	ES<span style="color: #008000;">&#91;</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">left</span><span style="color: #000080;">=</span>ES<span style="color: #008000;">&#91;</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">right</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	ES<span style="color: #008000;">&#91;</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span><span style="color: #000080;">=</span>EC<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #000040;">&amp;</span>ES<span style="color: #008000;">&#91;</span>EC<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
et_node<span style="color: #000040;">*</span> et_build<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> l,<span style="color: #0000ff;">int</span> r<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> fnd<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	et_node <span style="color: #000040;">*</span>p<span style="color: #000080;">=</span>et_new<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>l<span style="color: #000080;">==</span>r<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #000080;">=</span>Ex<span style="color: #008000;">&#91;</span>l<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> p<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>r<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">')'</span> <span style="color: #000040;">&amp;&amp;</span> bk<span style="color: #008000;">&#91;</span>r<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>l<span style="color: #008000;">&#41;</span>
		l<span style="color: #000040;">++</span>,r<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>r<span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span>l<span style="color: #008080;">;</span>i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">')'</span><span style="color: #008000;">&#41;</span>
			i<span style="color: #000080;">=</span>bk<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'+'</span> <span style="color: #000040;">||</span> Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'-'</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			fnd<span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>fnd<span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>r<span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;=</span>l<span style="color: #008080;">;</span>i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">')'</span><span style="color: #008000;">&#41;</span>
				i<span style="color: #000080;">=</span>bk<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'*'</span> <span style="color: #000040;">||</span> Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #FF0000;">'/'</span><span style="color: #008000;">&#41;</span>
				<span style="color: #0000ff;">break</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #000080;">=</span>Ex<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #000080;">=</span>et_build<span style="color: #008000;">&#40;</span>l,i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #000080;">=</span>et_build<span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>is_left<span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>is_left<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">=</span>getoperator<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> p<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> clear<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #000080;">=</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v <span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'A'</span> <span style="color: #000040;">&amp;&amp;</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v <span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'Z'</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span>lt2add<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		addshrink<span style="color: #008000;">&#40;</span>p<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span>
	<span style="color: #008000;">&#123;</span>
		clear<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		clear<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> addinstruction<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p,<span style="color: #0000ff;">int</span> op,<span style="color: #0000ff;">int</span> a1,<span style="color: #0000ff;">int</span> a2,<span style="color: #0000ff;">int</span> a3<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	Current.<span style="color: #007788;">IC</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Time</span><span style="color: #000080;">=</span>RT<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Alu</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Op</span><span style="color: #000080;">=</span>op<span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A1</span><span style="color: #000080;">=</span>a1<span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A2</span><span style="color: #000080;">=</span>a2<span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>Current.<span style="color: #007788;">IC</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A3</span><span style="color: #000080;">=</span>a3<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">bool</span> samelevel<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>a<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #000040;">||</span>a<span style="color: #000080;">==</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #000040;">||</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>a<span style="color: #000080;">==</span><span style="color: #0000dd;">3</span><span style="color: #000040;">||</span>a<span style="color: #000080;">==</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">3</span><span style="color: #000040;">||</span>b<span style="color: #000080;">==</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> geta<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>p <span style="color: #000040;">||</span> vis<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>id<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	vis<span style="color: #008000;">&#91;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>id<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>is_left <span style="color: #000040;">||</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">||</span> p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">==</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#41;</span>
			SA<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>SAC<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>samelevel<span style="color: #008000;">&#40;</span>getoperator<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008000;">&#41;</span>,opdevide<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">return</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> r<span style="color: #000080;">=</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>r<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		geta<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		geta<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span>
	<span style="color: #008000;">&#123;</span>
		geta<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		geta<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	geta<span style="color: #008000;">&#40;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">void</span> getab<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span>a,et_node <span style="color: #000040;">*</span><span style="color: #000040;">&amp;</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	a<span style="color: #000080;">=</span>b<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>a<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		b<span style="color: #000080;">=</span>S<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span>SC<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		opdevide<span style="color: #000080;">=</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #008080;">;</span>
		<span style="color: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>vis,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>vis<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		vis<span style="color: #008000;">&#91;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>id<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		SAC<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		geta<span style="color: #008000;">&#40;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>left<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		geta<span style="color: #008000;">&#40;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>right<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		geta<span style="color: #008000;">&#40;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>SAC<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			a<span style="color: #000080;">=</span>SA<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">rand</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">%</span>SAC<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> contract<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>a<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	delshrink<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother <span style="color: #000040;">&amp;&amp;</span> a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #008080;">;</span>
		a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #000080;">=</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #008080;">;</span>
		a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		a<span style="color: #000080;">=</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000040;">!</span><span style="color: #000080;">=</span>root<span style="color: #008000;">&#41;</span>
		addshrink<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> bind<span style="color: #008000;">&#40;</span>et_node <span style="color: #000040;">*</span>a,et_node <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	delshrink<span style="color: #008000;">&#40;</span>b<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span>Acnt<span style="color: #008080;">;</span>
	b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">==</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #008000;">&#41;</span>
		contract<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		contract<span style="color: #008000;">&#40;</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>brother<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> greedy<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> p,op<span style="color: #008080;">;</span>
	et_node <span style="color: #000040;">*</span>a,<span style="color: #000040;">*</span>b<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>SC<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		getab<span style="color: #008000;">&#40;</span>a,b<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>RT<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;=</span>RT<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			p<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span>
			p<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span><span style="color: #008000;">&#40;</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #000080;">&lt;=</span>RT<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #000080;">&lt;=</span>RT<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			p<span style="color: #000080;">=</span><span style="color: #0000dd;">3</span><span style="color: #000040;">-</span>p<span style="color: #008080;">;</span>
		op<span style="color: #000080;">=</span>b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #008080;">;</span>
		addinstruction<span style="color: #008000;">&#40;</span>p,op,a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address,b<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address,<span style="color: #000040;">++</span>Acnt<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		RT<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>a<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #000080;">=</span>RT<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span>T<span style="color: #008000;">&#91;</span>op<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		bind<span style="color: #008000;">&#40;</span>a,b<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Current.<span style="color: #007788;">eadd</span><span style="color: #000080;">=</span>root<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>address<span style="color: #008080;">;</span>
	Current.<span style="color: #007788;">etime</span><span style="color: #000080;">=</span>root<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>ftime<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	root<span style="color: #000080;">=</span>et_build<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>,Len<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	root<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>father<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	Best.<span style="color: #007788;">etime</span><span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> Repeat<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>Repeat<span style="color: #000080;">&lt;=</span>MAX_Repeat<span style="color: #008080;">;</span>Repeat<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		clear<span style="color: #008000;">&#40;</span>root<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		RT<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>RT<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Current.<span style="color: #007788;">IC</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		Acnt<span style="color: #000080;">=</span>Lcnt<span style="color: #008080;">;</span>
		greedy<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Current.<span style="color: #007788;">etime</span><span style="color: #000080;">&lt;</span>Best.<span style="color: #007788;">etime</span><span style="color: #008000;">&#41;</span>
			Best<span style="color: #000080;">=</span>Current<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>Best.<span style="color: #007788;">IC</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;OP %d %d %d %d %d %dn&quot;</span>,
		Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Time</span>,Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Alu</span>,Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">Op</span>,Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A1</span>,Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A2</span>,Best.<span style="color: #007788;">I</span><span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">A3</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;END %d %dn&quot;</span>,Best.<span style="color: #007788;">etime</span>,Best.<span style="color: #007788;">eadd</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	print<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<blockquote>
<h2><span class="mw-headline">个人所得税</span></h2>
<p>某国个人所得税法规定，普通公民的主要应纳税收入项目及纳税金额如下：</p>
<p>工资、薪金所得。按月计算征税，以每月收入额减除费用800元后的余额作为该月应纳税所得额，税率如下表所示：</p>
<pre>级数	月应纳税所得额	税率（%）
1	不超过500元的	5
2	超过500元~2000元的部分	10
3	超过2000元~5000元的部分	15
4	超过5000元~20000元的部分	20
5	超过20000元~40000元的部分	25
6	超过40000元~60000元的部分	30
7	超过60000元~80000元的部分	35
8	超过80000元~100000元的部分	40
9	超过100000元的部分	45</pre>
<p>一次性劳动报酬所得。按次计算征税，每次不超过4000元的，减除费用800元；4000元以上的，减除20%的费用，余额为应纳税所得额。征税税率如下表所示：</p>
<pre>级数	每次应纳税所得额	税率（%）
1	不超过20000元的部分	20
2	超过20000元~50000元的部分	30
3	超过50000元的部分	40</pre>
<p>由上面可以看出，个人工资、薪金及一次性劳动报酬所得都是按照超额累进税率来征税的。超额累进税率将应纳税所得额按数额大小分成若干等级，每一等级 规定一个税率，税率依次提高，但每一纳税人的的应纳税所得额依照所属等级同时适用几个税率分别计算，将计算结果相加后的总额作为应纳税款。</p>
<p>例如，某人某月工资总额为3800元，减去800元后，应纳税所得额为3000元。其中1级500元，2级1500元，3级1000元， 税率分别为5%、10%、15%，应纳税总额为500*5%+1500*10%+1000*15%=325（元）。现在需要你编一程序，根据该国某公司的 所有职员一年内的各项收入信息（收入项目、收入时间、收入金额）计算该公司所有职员这一年应交纳的个人所得税总额。</p>
<p>输入</p>
<p>输入文件的第一行为一个正整数M（M&lt;= 50000），表示该公司的职员总数（职员编号依次为1,2,…,M）。接下来的各行每行表示一年内某一个职员的一项收入信息。具体格式如下： 工资、薪金收入信息：PAY 职员编号 收入时间 收入金额</p>
<p>一次性劳务报酬收入信息：INCOME 职员编号 收入时间 收入金额</p>
<p>其中，收入时间格式为：MM/DD，MM表示月份（1&lt;= MM&lt;=12），DD表示日期（1&lt;= DD&lt;=31）；收入金额是一个正整数（单位：元），并假设每人每项收入金额小于100万元。</p>
<p>输入文件以字符“#”表示结束。输入文件中同一行相邻两项之间用一个或多个空格隔开。</p>
<p>输出</p>
<p>输出文件只有一个正数P(保留两位小数)，P表示该公司所有职员一年内应交纳的个人所得税总额（单位：元）。</p>
<p>样例输入</p>
<pre>2
PAY 1 2/23 3800
INCOME 2 4/8 4010
INCOME 2 4/18 800
PAY 1 8/14 6700
PAY 1 8/10 1200
PAY 2 12/10 20000
#</pre>
<p>样例输出</p>
<pre>5476.60</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">免费馅饼 </span></h2>
<p>SERKOI最新推出了一种叫做“免费馅饼”的游戏:游戏在一个舞台上进行。舞台的宽度为W格，天幕的高度为H格，游戏者占一格。开始时游戏者站在舞台的正中央，手里拿着一个托盘。下图为天幕的高度为4格时某一个时刻游戏者接馅饼的情景。</p>
<p><a class="image" title="Image:Freepizza.gif" href="http://www.ruvtex.cn/wiki/Image:Freepizza.gif"><img longdesc="/wiki/Image:Freepizza.gif" src="http://www.ruvtex.cn/mw/images/4/47/Freepizza.gif" alt="Image:Freepizza.gif" width="384" height="215" /></a></p>
<p>游戏开始后，从舞台天幕顶端的格子中不断出现馅饼并垂直下落。游戏者左右移动去接馅饼。游戏者每秒可以向左或向右移动一格或两格，也可以站在原地不动。</p>
<p>馅饼有很多种，游戏者事先根据自己的口味，对各种馅饼依次打了分。同时，在8-308电脑的遥控下，各种馅饼下落的速度也是不一样的，下落速度以格/秒为单位。</p>
<p>当馅饼在某一秒末<strong>恰好</strong>到达游戏者所在的格子中，游戏者就收集到了这块馅饼。</p>
<p>写一个程序，帮助我们的游戏者收集馅饼，使得所收集馅饼的分数之和最大。</p>
<p>输入</p>
<p>输入文件的第一行是用空格隔开的两个正整数，分别给出了舞台的宽度W（1到99之间的奇数）和高度H（1到100之间的整数）。</p>
<p>接下来依馅饼的初始下落时间顺序给出了所有馅饼的信息。每一行给出了一块馅饼的信息。由四个正整数组成，分别表示了馅饼的初始下落时刻（0到1000秒），水平位置、下落速度（1到100）以及分值。游戏开始时刻为0。从1开始自左向右依次对水平方向的每格编号。</p>
<p>输入文件中同一行相邻两项之间用一个或多个空格隔开。</p>
<p>输出</p>
<p>输出文件的第一行给出了一个正整数，表示你的程序所收集的最大分数之和。</p>
<p>其后的每一行依时间顺序给出了游戏者每秒的决策。输出0表示原地不动、1或2表示向右移动一步或两步、-1 或-2表示向左移动一步或两步。输出应持续到游戏者收集完他要收集的最后一块馅饼为止。</p>
<p>样例输入</p>
<pre>3 3
0 1 2 5
0 2 1 3
1 2 1 3
1 3 1 4</pre>
<p>样例输出</p>
<pre>12
-1
1
1</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">围巾裁剪 </span></h2>
<p>裁缝有一块非常珍贵的丝绸围巾。可惜的是，围巾的某些部分已经被蛀虫给咬坏了。裁缝当然不愿意就这么把围巾给丢了，于是，他想把围巾给裁成两块小围巾送给他的两个女儿。自然，两块小围巾的面积之和越大越好。</p>
<p>这块围巾是一个正三角形，三条边被均匀地分成了N段，即这个正三角形被均匀地分成了N2个单元，每个单元是一个面积为1的正三角形。图一所 示为一个N=5的围巾，图中带阴影的单元表示被蛀虫咬坏的部分。从上往下看，围巾被分成了N行，第一行有1个单元，第二行有3个单元，其中有2个是形如D 的，有1个是形如Ñ 的（这两种三角形我们认为是形状相同的）。第三行有5个，其中有3个是形如D 的，有2个是形如Ñ 的…… 。用坐标（X,Y）给每个单元定位，第一行的单元的坐标为（1,1）；第二行从左到右的三个单元的坐标依次为（2,1）、（2,2）、（2,3）；…。</p>
<p><a class="image" title="Image:Scarfcut.jpg" href="http://www.ruvtex.cn/wiki/Image:Scarfcut.jpg"><img longdesc="/wiki/Image:Scarfcut.jpg" src="http://www.ruvtex.cn/mw/images/4/45/Scarfcut.jpg" alt="Image:Scarfcut.jpg" width="253" height="131" /></a></p>
<p>围巾的剪裁条件如下：</p>
<ol>
<li>裁成的两块小围巾形状与原来的大围巾完全相同，都是正三角形。</li>
<li>每一块小围巾里都不存在被蛀虫咬坏的部分。</li>
<li>裁剪时必须沿着单元的边界裁剪。</li>
<li>要求两块小围巾的面积的总和最大。</li>
</ol>
<p>图中，最优的裁剪方法已经用粗线画了出来，面积和为4+9=13。</p>
<p>现在需要你编一个程序来帮助裁缝解决这个问题。</p>
<p>输入</p>
<p>输入文件第一行为一个整数N（1&lt;=N&lt;=100），表示这块围巾总共被分成了N2个单元。第二行为一个整数M（0&lt;= M&lt;=N2-2），表示这块围巾共有M个单元被蛀虫咬坏了。接下的M行，每一行有两个正整数X和Y，为这M个被蛀虫咬坏的单元的坐标。</p>
<p>输入文件中同一行相邻两项之间用一个或多个空格隔开。</p>
<p>输出</p>
<p>输出文件仅含一个整数，为你所找到的裁出两块小围巾面积总和的最大值。</p>
<p>样例输入</p>
<pre>5
5
3 2
4 1
4 4
5 4
5 2</pre>
<p>样例输出</p>
<pre>13</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">SERNET模拟 </span></h2>
<p>计算机网络是现代科技发展的热点，传输性能是计算机网络的主要性能指标。SERKOI网络开发小组设计了一种称为SERNET的网络，并希望开发一个模拟软件来模拟该网络的数据传输情况，进而计算出网络的传输性能。</p>
<p>SERNET网络由服务器及连接它们的网络传输线路组成，服务器用服务器地址予以标识，网络传输线路为双向传输线路。网络传输过程中将各种 待传输数据分割为若干个大小相同的数据包，以数据包为单位进行传输。数据包在传输线路上传输时需要一定的传输时间，不同的传输线路的传输时间不同。服务器 处理数据的时间较之于传输时间很小，可忽略不计。每一个数据包中除了包括具体的数据信息外，还含有如下标识信息：</p>
<ul>
<li>数据包编号</li>
<li>数据包源服务器地址</li>
<li>数据包目的服务器地址</li>
</ul>
<p>网络传输的功能就是将一个个数据包从源服务器传输到目的服务器。对于每一个数据包，具体的网络传输方案为：</p>
<p>源服务器将待发送的数据包一律复制若干份并向与之相连的所有服务器发送该数据包。服务器接收到一个数据包后，如果该数据包符合下面任何一个条件：</p>
<ul>
<li>数据包的源服务器地址与本服务器地址相同</li>
<li>数据包的目的服务器地址与本服务器地址相同</li>
<li>本服务器已转发过与该数据包编号相同的数据包</li>
</ul>
<p>则接收该数据包；否则，服务器将其复制若干份并向与它相连的所有服务器转发该数据包。这里，两台服务器“相连”的含义指它们之间有网络传输线路直接相连。</p>
<p>现在需要你编一个程序来模拟SERNET网络中的数据包传输情况。</p>
<p>输入</p>
<p>输入文件的第一行为一个正整数N（N&lt;100），表示SERNET中服务器的数目。第二行有N个互不相等的不超过100的正整数，表 示每个服务器的地址。 第三行有一个正整数M，表示SERNET中传输线路的数目。接下来的M行每行用三个正整数表示一条传输线路连接的两台服务器的地址以及该传输线路的传输时 间。线路传输时间为不超过100的正整数。 接下来的一行为一个正整数K（K&lt;10000），表示SERNET中数据包的数目。以下的K行每行表示一个数据包的信息，格式为： 数据包编号 起始发送时间 源服务器地址 目的服务器地址</p>
<p>其中数据包编号为互不相同的小于100000的正整数。</p>
<p>输入文件的最后一行为一个正整数T（T&lt;10000），T为输出时刻。</p>
<p>输入文件中同一行相邻两项之间用一个或多个空格隔开。</p>
<p>输出</p>
<p>输出文件的第一行为一个整数P，表示T时刻后还在网络中传输的数据包数目（编号相同的数据包为同一数据包）。</p>
<p>约定</p>
<ul>
<li>本题中所有时间量的单位均相同；</li>
<li>每一条传输线路上在同一时刻能传输任意多个数据包。</li>
</ul>
<p>样例输入</p>
<pre>4
57 42 10 93
4
57 42 6
42 93 5
42 10 2
10 93 10
2
433 10 57 10
5678 11 42 93
23</pre>
<p>样例输出</p>
<pre>1</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">软件安装盘 </span></h2>
<p>软件安装通常是一件令人头疼的事。软件一般都包括若干个相对独立的部分（称为“组件”），在安装的时候由用户决定安装哪些部分。并且，这些相对独立的组件之间在安装时有一定的先后顺序要求。</p>
<p>由于当代的个人计算机普遍安装了软盘驱动器，所以软件的最流行的载体形式是软盘。然而，由于软盘的容量有限，稍大一些的软件就无法用一张软盘装下。这时，这些软件往往要用很多张软盘来存储。每张磁盘上存储了软件的一个或多个组件。这些软盘称为软件的安装盘。</p>
<p>由于软件的各个组件分散在不同的软盘上，而在安装时又有一定的先后顺序要求，所以很容易发生要求用户反复换盘的情况。而计算机用户在安装软 件的时候，最反感的就是反复在软盘之间切换：找盘、插盘、取盘、找盘、插盘、取盘、…，一切都显得那么琐碎和无序。因此，有必要对软件安装盘的制作提出下 述要求：</p>
<p>永远不要让用户将一张磁盘插入两次。更精确地，要求对安装盘从1开始顺序编号，使得安装的时候，用户只要按顺序插入磁盘即可。</p>
<p>出于经济的考虑，通常要求安装盘的总数最少。写一个程序，对于给定的软件，制定最优的安装盘方案。</p>
<p>输入</p>
<ul>
<li>输入文件的第一行是一个正整数M（1&lt;= M&lt;= 109），给出了每张磁盘的最大容量（字节数）。</li>
<li>输入文件的第二行是一个正整数N（1&lt;= N&lt;= 100），给出了软件的组件数。接下来的N行每行给出一个组件的详细信息。包括：</li>
</ul>
<ol>
<li>组件所占的字节数；</li>
<li>在安装该组件之前应先安装的组件序号（如有多个组件须先安装，则每个都应列出其序号，若无须先安装其它组件，则该行只含组件所占字节数）。</li>
</ol>
<ul>
<li>输入文件中同一行相邻两项之间用一个或多个空格隔开。</li>
</ul>
<p>输出</p>
<p>输出文件的第一行给出了最优安装盘方案的软盘数。如果不存在最优安装盘方案，则输出0。接下来的每一行顺序给出了每张盘上存储的组件的序号。如果一张盘上存储了多个组件，则输出所有这些组件的序号，中间用一个空格隔开。</p>
<p>样例输入</p>
<pre>1457664
3
512665
912345 1
832542 1</pre>
<p>样例输出</p>
<pre>2
1 2
3</pre>
</blockquote>
<blockquote>
<h2><span class="mw-headline">并行计算</span></h2>
<p>运算器（ALU）是计算机中的重要部件，它的功能是进行数学运算。图一是运算器的工作简图，运算器的一次运算操作过程为：运算器在控制器的控制下， 从指定的存储器（MEMORY）存储单元中读出待运算的两个源操作数A和B，经过一定时间的计算后得到运算结果C，并将它写入指定的存储器存储单元中。</p>
<p><a class="image" title="Image:Parallel1.jpg" href="http://www.ruvtex.cn/wiki/Image:Parallel1.jpg"><img longdesc="/wiki/Image:Parallel1.jpg" src="http://www.ruvtex.cn/mw/images/5/56/Parallel1.jpg" alt="Image:Parallel1.jpg" width="384" height="173" /></a> 图一</p>
<p>运算器能完成的运算种类及所需时间如下表所示：</p>
<table border="1" cellspacing="0">
<tbody>
<tr>
<td>运算种类</td>
<td>运算操作</td>
<td>所需运算时间</td>
</tr>
<tr>
<td>1</td>
<td>C=A+B</td>
<td>Tadd</td>
</tr>
<tr>
<td>2</td>
<td>C=A-B</td>
<td>Tsub</td>
</tr>
<tr>
<td>3</td>
<td>C=A*B</td>
<td>Tmul</td>
</tr>
<tr>
<td>4</td>
<td>C=A/B</td>
<td>Tdiv</td>
</tr>
</tbody>
</table>
<p>在计算复杂的四则混合运算表达式时，运算器就变成了高速计算的“瓶颈”。为了得到更快的运算速度，计算机科学家们设计了一种有两个运算器的并行计算机，它的结构简图如图二所示。</p>
<p><a class="image" title="Image:Parallel2.jpg" href="http://www.ruvtex.cn/wiki/Image:Parallel2.jpg"><img longdesc="/wiki/Image:Parallel2.jpg" src="http://www.ruvtex.cn/mw/images/a/a9/Parallel2.jpg" alt="Image:Parallel2.jpg" width="443" height="240" /></a> 图二</p>
<p>由于两个运算器可以同时进行运算，因此大大提高了整机运算速度。该并行计算机有以下两种控制指令：</p>
<p>运算指令</p>
<ul>
<li>OP Time Alu_no Operate_no Address1 Address2 Address3</li>
</ul>
<p>其中OP为运算指令标识符，其后有六个参数：</p>
<ul>
<li>Time表示执行该指令的开始时间</li>
<li>Alu_no表示承担该次运算操作的运算器编号（Alu_no∈{1，2}）</li>
<li>Operate_no表示该次运算的运算种类（Operate_no∈{1，2，3，4}）</li>
<li>Address1,Address2表示待运算的两个源操作数的存储单元地址</li>
<li>Address3表示该次运算结束后存放运算结果的存储单元地址</li>
</ul>
<p>结束指令</p>
<ul>
<li>END Time Address</li>
</ul>
<p>其中 END为结束指令标识符，其后有两个参数：</p>
<ul>
<li>Time表示整个控制程序的结束时间</li>
<li>Address表示存放最终计算结果的存储单元地址</li>
</ul>
<p>每个运算器同一时刻可以执行一条运算指令，结束指令表示控制程序结束。</p>
<p>现在需要你编一个程序，对给定的待计算的表达式，自动生成一段控制程序，使图二所示的并行计算机能够正确计算该表达式的值，并使总运算时间尽量小。</p>
<p>输入</p>
<p>输入文件的第一行为四个不超过1000的正整数，依次为Tadd、Tsub、Tmul和Tdiv。 输入文件的第二行为待计算的四则混合运算表达式（长度不超过255个字符），表达式中的变量用大写英文字母表示，各变量的初始值依照变量的字母顺序依次存 放在地址为1,2,…的存储单元中。</p>
<p>输入文件中同一行相邻两项之间用一个或多个空格隔开。</p>
<p>输出</p>
<p>输出文件为完成该表达式计算的最优控制指令段。指令根据其开始执行时间先后依次输出（对于开始执行时间相同的两条指令，输出先后次序不限），每条指令占一行。输出文件中同一行相邻两项之间用一个空格隔开。</p>
<p>约定</p>
<ul>
<li>控制程序初始执行时间从0时刻开始。</li>
<li>问题中所涉及的各种时间量的单位相同。</li>
<li>存储器的存储单元最多有1K个。</li>
<li>由于数据读写时间同运算时间相比较小，可忽略不计。</li>
<li>如果两个运算器同时对同一个存储单元进行操作，则运算器1先操作，运算器2后操作</li>
</ul>
<p>评分</p>
<ul>
<li>程序的得分将取决于其所能找到的最优解与标准最优解相比较的优劣程度。</li>
</ul>
<p>样例输入</p>
<pre>2 2 4 12
C+(A+B)*C-E/F+F</pre>
<p>样例输出</p>
<pre>OP 0 1 1 1 2 6
OP 0 2 4 4 5 8
OP 2 1 1 3 5 7
OP 4 1 3 6 3 10
OP 8 1 1 10 7 11
OP 12 1 2 11 8 12
END 14 12</pre>
</blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/noi-1997-solution/" title="NOI 1997 解题报告">NOI 1997 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-2000-solution/" title="NOI 2000 解题报告">NOI 2000 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-1999-solution/" title="NOI 1999 解题报告">NOI 1999 解题报告</a></li><li><a href="http://www.byvoid.com/blog/noi-2001-solution/" title="NOI 2001 解题报告">NOI 2001 解题报告</a></li><li><a href="http://www.byvoid.com/blog/poi-2000-nar/" title="POI 2000 Skiers 滑雪队">POI 2000 Skiers 滑雪队</a></li><li><a href="http://www.byvoid.com/blog/poi-1998-gon/" title="POI 1998 追赶 Chase">POI 1998 追赶 Chase</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/noi-1998-solution/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>NOI 1997 解题报告</title>
		<link>http://www.byvoid.com/blog/noi-1997-solution/</link>
		<comments>http://www.byvoid.com/blog/noi-1997-solution/#comments</comments>
		<pubDate>Sun, 15 Feb 2009 13:33:58 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[NOI]]></category>
		<category><![CDATA[1997]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[剪枝]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[图论]]></category>
		<category><![CDATA[搜索]]></category>
		<category><![CDATA[最短路径]]></category>
		<category><![CDATA[正则表达式]]></category>
		<category><![CDATA[离散化]]></category>
		<category><![CDATA[立体切割]]></category>
		<category><![CDATA[解题报告]]></category>
		<category><![CDATA[计算几何]]></category>
		<category><![CDATA[递归]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=866</guid>
		<description><![CDATA[我的计划就从NOI1997开始。NOI1997一共有6道题，分别是[卫星覆盖][积木游戏][竞赛排名][最佳游览][最优乘车][文件匹配]。这一年的6个题难易分布均衡，做完后收获不小。 其中[竞赛排名]和[最佳游... ]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.byvoid.com/blog/noi-plan/">我的计划</a>就从NOI1997开始。<strong>NOI1997</strong>一共有6道题，分别是[卫星覆盖][积木游戏][竞赛排名][最佳游览][最优乘车][文件匹配]。这一年的6个题难易分布均衡，做完后收获不小。</p>
<p>其中[竞赛排名]和[最佳游览]是两个最简单的题，但是往往细节是容易忽视的。[积木游戏]和[最优乘车]难度属于中等，分别是动态规划和构造最短路径解题。[卫星覆盖]和[文件匹配]属于较难题，用到了[卫星覆盖]离散化或者立体切割的方法，而[文件匹配]是搜索中的难题，需要很多的优化。</p>
<p>做这些题我花了4天的时间，进度还算正常，希望能继续保持下去。今后做题的宗旨是“不求多，不求快，但求精”。</p>
<p><span id="more-866"></span></p>
<p><strong>[最佳游览]</strong></p>
<p>这是一道非常简单的题，读懂题后，发现方法就是统计出每一列的最大值，存为一个数列A。求A的连续最大子序列即可。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code33'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86633"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</pre></td><td class="code" id="p866code33"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 perfecttour
 * Author: Guo Jiabao
 * Time: 2009.2.14 14:01
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">20001</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> M,N,i,j,t,T,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;perfecttour.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;perfecttour.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>M,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	N<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		A<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>t<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>t<span style="color: #000080;">&gt;</span>A<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				A<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>t<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span>,T<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		T<span style="color: #000040;">+</span><span style="color: #000080;">=</span>A<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>T<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			T<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>T<span style="color: #000080;">&gt;</span>Ans<span style="color: #008000;">&#41;</span>
			Ans<span style="color: #000080;">=</span>T<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[竞赛排名]</strong></p>
<p>这也是一道送分题，数据很小方法很明确，就是排序。关键在于看清式子，注意关系算出各个量后直接排序就行了。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code34'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86634"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
</pre></td><td class="code" id="p866code34"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 competitionsort
 * Author: Guo Jiabao
 * Time: 2009.2.13 14:09
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">1001</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> sum<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,S<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">9</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">double</span> avg<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">9</span><span style="color: #008000;">&#93;</span>,pos<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,y<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">9</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> inf<span style="color: #008000;">&#123;</span><span style="color: #0000ff;">int</span> id,sum<span style="color: #008080;">;</span><span style="color: #0000ff;">double</span> pos<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span> P<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N<span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;competitionsort.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;competitionsort.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">double</span> ABS<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span> A<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> A<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">0</span><span style="color: #008080;">?</span><span style="color: #000040;">-</span>A<span style="color: #008080;">:</span>A<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>pos <span style="color: #000080;">&gt;</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>pos<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>pos <span style="color: #000080;">&lt;</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>pos<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>sum <span style="color: #000080;">&gt;</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>sum<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>sum <span style="color: #000080;">&lt;</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>sum<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>id <span style="color: #000080;">&lt;</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>inf <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>b<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>id<span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> <span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> statistics<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">double</span> m<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">8</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			avg<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			sum<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		avg<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">/</span><span style="color: #000080;">=</span>N<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		m<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			m<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>ABS<span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>avg<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		m<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">/</span><span style="color: #000080;">=</span>N<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>m<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				y<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span>
				y<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span>avg<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">/</span>m<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			pos<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>y<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">4</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span><span style="color: #0000dd;">8</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			pos<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">+</span><span style="color: #000080;">=</span>y<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000040;">*</span><span style="color:#800080;">0.8</span><span style="color: #008080;">;</span>
		P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">pos</span><span style="color: #000080;">=</span>pos<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">sum</span><span style="color: #000080;">=</span>sum<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>P<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,N,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>P<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>,cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,P<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	statistics<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[积木游戏]</strong></p>
<p>由于把积木分成M堆，每堆中积木的编号都是严格划分的，可以看作把积木按编号顺序划分为M份。可以动态规划，状态转移时只需考虑第i个放置相邻两对的决策。</p>
<p>设定F[i,j,k]表示放置第i个积木时，把它放在第j堆，用第k种方式放置的总最大高度。</p>
<p>第k种放置方式(0&lt;=k&lt;=2)，分别表示了用积木的哪一面作为底。</p>
<p>状态转移方程</p>
<ul>
<li>F[i,j,k]=Max{ F[a,j,b]|(i,k)能放置在(a,b)上 ,F[a,j-1,b] (0&lt;=a&lt;=i-1,0&lt;=b&lt;=2) } + height(i,k)</li>
</ul>
<ul>
<li>height(i,k)为第i个积木以方式k放置的高。</li>
</ul>
<p>初始条件为</p>
<ul>
<li>F[i,j,k]=负无穷大;(0&lt;=i&lt;=N,0&lt;=j&lt;=M,0&lt;=k&lt;=2)</li>
<li>F[0,0,0]=0;</li>
</ul>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code35'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86635"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
</pre></td><td class="code" id="p866code35"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 buildinggame
 * Author: Guo Jiabao
 * Time: 2009.2.12 13:53
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAX<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> block<span style="color: #008000;">&#123;</span><span style="color: #0000ff;">int</span> a,b,c<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>B<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> F<span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAX<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,Ans<span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;buildinggame.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;buildinggame.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>N,<span style="color: #000040;">&amp;</span>M<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">a</span>,<span style="color: #000040;">&amp;</span>B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">b</span>,<span style="color: #000040;">&amp;</span>B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
				F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF<span style="color: #008080;">;</span>
	F<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> block roll<span style="color: #008000;">&#40;</span>block A,<span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> t<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>t<span style="color: #000080;">=</span>A.<span style="color: #007788;">b</span><span style="color: #008080;">;</span>A.<span style="color: #007788;">b</span><span style="color: #000080;">=</span>A.<span style="color: #007788;">c</span><span style="color: #008080;">;</span>A.<span style="color: #007788;">c</span><span style="color: #000080;">=</span>t<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">==</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>t<span style="color: #000080;">=</span>A.<span style="color: #007788;">a</span><span style="color: #008080;">;</span>A.<span style="color: #007788;">a</span><span style="color: #000080;">=</span>A.<span style="color: #007788;">b</span><span style="color: #008080;">;</span>A.<span style="color: #007788;">b</span><span style="color: #000080;">=</span>A.<span style="color: #007788;">c</span><span style="color: #008080;">;</span>A.<span style="color: #007788;">c</span><span style="color: #000080;">=</span>t<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> A<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">bool</span> available<span style="color: #008000;">&#40;</span>block A,<span style="color: #0000ff;">int</span> k1,block B,<span style="color: #0000ff;">int</span> k2<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	A<span style="color: #000080;">=</span>roll<span style="color: #008000;">&#40;</span>A,k1<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>B<span style="color: #000080;">=</span>roll<span style="color: #008000;">&#40;</span>B,k2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>B.<span style="color: #007788;">a</span><span style="color: #000080;">&gt;=</span>A.<span style="color: #007788;">a</span> <span style="color: #000040;">&amp;&amp;</span> B.<span style="color: #007788;">b</span><span style="color: #000080;">&gt;=</span>A.<span style="color: #007788;">b</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">||</span> <span style="color: #008000;">&#40;</span>B.<span style="color: #007788;">a</span><span style="color: #000080;">&gt;=</span>A.<span style="color: #007788;">b</span> <span style="color: #000040;">&amp;&amp;</span> B.<span style="color: #007788;">b</span><span style="color: #000080;">&gt;=</span>A.<span style="color: #007788;">a</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k,a,b<span style="color: #008080;">;</span>
	block T<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>a<span style="color: #000080;">&lt;</span>i<span style="color: #008080;">;</span>a<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
					<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>b<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>b<span style="color: #000080;">&lt;</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>b<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>available<span style="color: #008000;">&#40;</span>B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,k,B<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>,b<span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&gt;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
							F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> F<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
						<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span> F<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&gt;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#41;</span>
							F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> F<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
					<span style="color: #008000;">&#125;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>T<span style="color: #000080;">=</span>roll<span style="color: #008000;">&#40;</span>B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,k<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>.<span style="color: #007788;">c</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">&gt;</span>Ans<span style="color: #008000;">&#41;</span>
					Ans<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	dynamic<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Ans<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[最优乘车]</strong></p>
<p>可以构造最短路径求解。对于不同线路上的相同编号的车站，应该看作不同的顶点，而且这两个点之间互相连接一条边权为1的有向边。同一条线路上的所有 车站，按照顺序连接边权为0的有向边。为了方便，我们增设一个超级源S和超级汇T。S向所有代表车站1的顶点连接一条边权为0的有向边，所有代表车站N的 顶点向T连接一条边权为0的有向边。</p>
<p>图构造好以后，只需求从S到T的最短路径即可。建议用SPFA，在这种特殊的01图上，SPFA会比Dijkstra(堆)快得多。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code36'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86636"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
</pre></td><td class="code" id="p866code36"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 bustravel
 * Author: Guo Jiabao
 * Time: 2009.2.14 19:10
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXM<span style="color: #000080;">=</span><span style="color: #0000dd;">101</span>,MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">501</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> edge<span style="color: #008000;">&#123;</span>edge <span style="color: #000040;">*</span>next<span style="color: #008080;">;</span><span style="color: #0000ff;">int</span> t,v<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> adjl<span style="color: #008000;">&#123;</span>edge <span style="color: #000040;">*</span>f,<span style="color: #000040;">*</span>l<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> M,N,Total,Target,EC<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,Queue_cnt,Queue_head,Queue_tail<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> BusLine<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//第i行第j个点的原始编号</span>
<span style="color: #0000ff;">int</span> BusHash<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> <span style="color: #666666;">//第i行原始编号为j的点正式编号</span>
<span style="color: #0000ff;">int</span> sp<span style="color: #008000;">&#91;</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#93;</span>,Queue<span style="color: #008000;">&#91;</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> inQueue<span style="color: #008000;">&#91;</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
edge ES<span style="color: #008000;">&#91;</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
adjl Adjl<span style="color: #008000;">&#91;</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;bustravel.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;bustravel.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>M,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">do</span> c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">||</span> c<span style="color: #000080;">==</span><span style="color: #0000dd;">13</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><span style="color: #008000;">&#40;</span>c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">10</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000dd;">13</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000dd;">ungetc</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>k<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
			BusHash<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">++</span>Total<span style="color: #008080;">;</span>
			c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>j<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Target<span style="color: #000080;">=</span><span style="color: #000040;">++</span>Total<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> addedge<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a,<span style="color: #0000ff;">int</span> b,<span style="color: #0000ff;">int</span> v<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	edge <span style="color: #000040;">*</span>p<span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>ES<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>EC<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Adjl<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #008000;">&#41;</span>
		Adjl<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">=</span>Adjl<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		Adjl<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">f</span><span style="color: #000080;">=</span>Adjl<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
	p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #000080;">=</span>b<span style="color: #008080;">;</span>p<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> makegraph<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,k,p,a,b<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			a<span style="color: #000080;">=</span>BusHash<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>   <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			b<span style="color: #000080;">=</span>BusHash<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span> BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			addedge<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
				addedge<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>,a,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>N<span style="color: #008000;">&#41;</span>
				addedge<span style="color: #008000;">&#40;</span>a,Target,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
			addedge<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span>,b,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>N<span style="color: #008000;">&#41;</span>
			addedge<span style="color: #008000;">&#40;</span>b,Target,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>M<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			p<span style="color: #000080;">=</span>BusLine<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			a<span style="color: #000080;">=</span>BusHash<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000080;">=</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>k<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				b<span style="color: #000080;">=</span>BusHash<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>b<span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					addedge<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
					addedge<span style="color: #008000;">&#40;</span>b,a,<span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #008000;">&#125;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> Queue_ins<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> p<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>Queue_head<span style="color: #000080;">==</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#41;</span> Queue_head<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	Queue<span style="color: #008000;">&#91;</span>Queue_head<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
	inQueue<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	Queue_cnt<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> Queue_pop<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> p<span style="color: #000080;">=</span>Queue<span style="color: #008000;">&#91;</span>Queue_tail<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>Queue_tail<span style="color: #000080;">==</span>MAXM<span style="color: #000040;">*</span>MAXN<span style="color: #008000;">&#41;</span> Queue_tail<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	inQueue<span style="color: #008000;">&#91;</span>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	Queue_cnt<span style="color: #000040;">--</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> p<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> spfa<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,u,v<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>Total<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
	Queue_head<span style="color: #000080;">=</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>Queue_tail<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	Queue_ins<span style="color: #008000;">&#40;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>Queue_cnt<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		u<span style="color: #000080;">=</span>Queue_pop<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>edge <span style="color: #000040;">*</span>k<span style="color: #000080;">=</span>Adjl<span style="color: #008000;">&#91;</span>u<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">f</span><span style="color: #008080;">;</span>k<span style="color: #008080;">;</span>k<span style="color: #000080;">=</span>k<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			v<span style="color: #000080;">=</span>k<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>sp<span style="color: #008000;">&#91;</span>u<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> k<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v <span style="color: #000080;">&lt;</span> sp<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				sp<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>sp<span style="color: #008000;">&#91;</span>u<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> k<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>inQueue<span style="color: #008000;">&#91;</span>v<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
					Queue_ins<span style="color: #008000;">&#40;</span>v<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	makegraph<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	spfa<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>sp<span style="color: #008000;">&#91;</span>Target<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>INF<span style="color: #008000;">&#41;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;NOn&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,sp<span style="color: #008000;">&#91;</span>Target<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[卫星覆盖]</strong></p>
<p>经典的分治问题，方法为立方体切割。和USACO中的<a href="http://www.byvoid.com/blog/usaco-314-shaping-regions/">Shaping Regions</a>的做法相似，只不过是从二维推广到了三维。</p>
<p>具体方法是，对于第i个立方体，判断大于i的每个立方体是否与之有公共部分，如果有公共部分，把该长方体非公共部分切割成几个规则的长方体，然后递归处理每一个长方体。直到没有公共部分了，体积就是长*宽*高。</p>
<p>对于两个矩形（每条边都平行于坐标轴），我们判断它们相交，有一种简单的方法。两个矩形A和B，定义(A.x1,A.y1)为A的左下角顶 点，(A.x2,A.y2)为A的右上角顶点，同理B，只要满足 A.x1 &lt; B.x2 且 A.y1 &lt; B.y2 且 B.x1 &lt; A.x2 且 B.y1 &lt; A.y2，则A、B一定相交。</p>
<p>相似地，对于两个长方体A、B，只要满足</p>
<pre>A.x1 &lt; B.x2 &amp;&amp; A.y1 &lt; B.y2 &amp;&amp; A.z1 &lt; B.z2 &amp;&amp; B.x1 &lt; A.x2 &amp;&amp; B.y1 &lt; A.y2 &amp;&amp; B.z1 &lt; A.z2</pre>
<p>则A、B相交。</p>
<p>上述方法的时间复杂度是O(N^3)，是很宽松的。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code37'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86637"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
</pre></td><td class="code" id="p866code37"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 satellitecover
 * Author: Guo Jiabao
 * Time: 2009.2.11 21:17
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">201</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> cube<span style="color: #008000;">&#123;</span><span style="color: #0000ff;">int</span> x1,y1,z1,x2,y2,z2<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N<span style="color: #008080;">;</span>
cube Cubes<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,a,b,c,r<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;satellitecover.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;satellitecover.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,<span style="color: #000040;">&amp;</span>N<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d%d%d%d&quot;</span>,<span style="color: #000040;">&amp;</span>a,<span style="color: #000040;">&amp;</span>b,<span style="color: #000040;">&amp;</span>c,<span style="color: #000040;">&amp;</span>r<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x1</span><span style="color: #000080;">=</span>a<span style="color: #000040;">-</span>r<span style="color: #008080;">;</span> Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y1</span><span style="color: #000080;">=</span>b<span style="color: #000040;">-</span>r<span style="color: #008080;">;</span> Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">z1</span><span style="color: #000080;">=</span>c<span style="color: #000040;">-</span>r<span style="color: #008080;">;</span>
		Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">x2</span><span style="color: #000080;">=</span>a<span style="color: #000040;">+</span>r<span style="color: #008080;">;</span> Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">y2</span><span style="color: #000080;">=</span>b<span style="color: #000040;">+</span>r<span style="color: #008080;">;</span> Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">z2</span><span style="color: #000080;">=</span>c<span style="color: #000040;">+</span>r<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">bool</span> cross<span style="color: #008000;">&#40;</span>cube A,cube B<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> A.<span style="color: #007788;">x1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">x2</span> <span style="color: #000040;">&amp;&amp;</span> A.<span style="color: #007788;">y1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">y2</span> <span style="color: #000040;">&amp;&amp;</span> A.<span style="color: #007788;">z1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">z2</span> <span style="color: #000040;">&amp;&amp;</span> B.<span style="color: #007788;">x1</span> <span style="color: #000080;">&lt;</span> A.<span style="color: #007788;">x2</span> <span style="color: #000040;">&amp;&amp;</span> B.<span style="color: #007788;">y1</span> <span style="color: #000080;">&lt;</span> A.<span style="color: #007788;">y2</span> <span style="color: #000040;">&amp;&amp;</span> B.<span style="color: #007788;">z1</span> <span style="color: #000080;">&lt;</span> A.<span style="color: #007788;">z2</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
cube mcube<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x1,<span style="color: #0000ff;">int</span> y1,<span style="color: #0000ff;">int</span> z1,<span style="color: #0000ff;">int</span> x2,<span style="color: #0000ff;">int</span> y2,<span style="color: #0000ff;">int</span> z2<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	cube A<span style="color: #008080;">;</span>
	A.<span style="color: #007788;">x1</span><span style="color: #000080;">=</span>x1<span style="color: #008080;">;</span>A.<span style="color: #007788;">y1</span><span style="color: #000080;">=</span>y1<span style="color: #008080;">;</span>A.<span style="color: #007788;">z1</span><span style="color: #000080;">=</span>z1<span style="color: #008080;">;</span>A.<span style="color: #007788;">x2</span><span style="color: #000080;">=</span>x2<span style="color: #008080;">;</span>A.<span style="color: #007788;">y2</span><span style="color: #000080;">=</span>y2<span style="color: #008080;">;</span>A.<span style="color: #007788;">z2</span><span style="color: #000080;">=</span>z2<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> A<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> devide<span style="color: #008000;">&#40;</span>cube A,<span style="color: #0000ff;">int</span> pos<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	cube B<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> volume<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>pos<span style="color: #000080;">&lt;=</span>N <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>cross<span style="color: #008000;">&#40;</span>A,B<span style="color: #000080;">=</span>Cubes<span style="color: #008000;">&#91;</span>pos<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> pos<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pos<span style="color: #000080;">&gt;</span>N<span style="color: #008000;">&#41;</span>
		volume<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x2</span><span style="color: #000040;">-</span>A.<span style="color: #007788;">x1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">y2</span><span style="color: #000040;">-</span>A.<span style="color: #007788;">y1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">z2</span><span style="color: #000040;">-</span>A.<span style="color: #007788;">z1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">x1</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span>,A.<span style="color: #007788;">y1</span>,A.<span style="color: #007788;">z1</span>,B.<span style="color: #007788;">x1</span>,A.<span style="color: #007788;">y2</span>,A.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			A.<span style="color: #007788;">x1</span><span style="color: #000080;">=</span>B.<span style="color: #007788;">x1</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x2</span> <span style="color: #000080;">&gt;</span> B.<span style="color: #007788;">x2</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>B.<span style="color: #007788;">x2</span>,A.<span style="color: #007788;">y1</span>,A.<span style="color: #007788;">z1</span>,A.<span style="color: #007788;">x2</span>,A.<span style="color: #007788;">y2</span>,A.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			A.<span style="color: #007788;">x2</span><span style="color: #000080;">=</span>B.<span style="color: #007788;">x2</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">y1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">y1</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span>,A.<span style="color: #007788;">y1</span>,A.<span style="color: #007788;">z1</span>,A.<span style="color: #007788;">x2</span>,B.<span style="color: #007788;">y1</span>,A.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			A.<span style="color: #007788;">y1</span><span style="color: #000080;">=</span>B.<span style="color: #007788;">y1</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">y2</span> <span style="color: #000080;">&gt;</span> B.<span style="color: #007788;">y2</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span>,B.<span style="color: #007788;">y2</span>,A.<span style="color: #007788;">z1</span>,A.<span style="color: #007788;">x2</span>,A.<span style="color: #007788;">y2</span>,A.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			A.<span style="color: #007788;">y2</span><span style="color: #000080;">=</span>B.<span style="color: #007788;">y2</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">z1</span> <span style="color: #000080;">&lt;</span> B.<span style="color: #007788;">z1</span><span style="color: #008000;">&#41;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span>,A.<span style="color: #007788;">y1</span>,A.<span style="color: #007788;">z1</span>,A.<span style="color: #007788;">x2</span>,A.<span style="color: #007788;">y2</span>,B.<span style="color: #007788;">z1</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">z2</span> <span style="color: #000080;">&gt;</span> B.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>
			volume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>mcube<span style="color: #008000;">&#40;</span>A.<span style="color: #007788;">x1</span>,A.<span style="color: #007788;">y1</span>,B.<span style="color: #007788;">z2</span>,A.<span style="color: #007788;">x2</span>,A.<span style="color: #007788;">y2</span>,A.<span style="color: #007788;">z2</span><span style="color: #008000;">&#41;</span>,pos<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> volume<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,totalvolume<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>N<span style="color: #008080;">;</span>i<span style="color: #000080;">&gt;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000040;">--</span><span style="color: #008000;">&#41;</span>
		totalvolume<span style="color: #000040;">+</span><span style="color: #000080;">=</span>devide<span style="color: #008000;">&#40;</span>Cubes<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>,i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,totalvolume<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></td></tr></table></div>

<p><strong>[文件匹配]</strong></p>
<p>这是NOI1997中最难的一道题，我在这道题上花费了一天时间才通过了。基本框架就是搜索，搜索出匹配串，对所有文件名按照规则匹配，判断是否可行，算出匹配的数目，更新最优值。</p>
<p>暴力的搜索连样例都过不了，我们需要深入分析，进行优化和剪枝。我的搜索顺序是从匹配串的第一位到最后一位(所有文件名长度最大值)。我们定义正文件为标记&#8217;+'的文件，负文件为标记&#8217;-'的文件。</p>
<p><strong>优化1</strong>.记录下所有用过的字符，顺序存入线性表，以备搜索时使用。</p>
<p><strong>优化2</strong>.去除多余的状态，例如多个*在一起是浪费的，*?和?*是一样的(但是和*不一样)，在产生状态时应避免出现。</p>
<p><strong>优化3</strong>.关于判断文件名是否匹配，在搜索出一位时，不需要把整个串与文件名匹配，如果前面都是匹配的，只需判断最后一位是否 成立，我们需要记录每个文件名已经前缀匹配到了哪一位。但是由于*的存在，使这个判断复杂性大大增加。例如当前的匹配串A*A对A1A2A前缀匹 配，A*A可以匹配到第3位(A1A)，也可以匹配到第5位(A1A2A)。而且由于后面扩展出的状态未知，我们也无法知道究竟匹配到哪一位是合适的，所 以必须都记录下。即对每个文件名开辟一个数组空间，存储该文件名可能匹配到的所有位置。在状态的扩展中，也需要对所有的可能分别扩展。在最终判断时，一个 文件名只要有一种可能使得完全匹配，就算是匹配成功。</p>
<p><strong>优化4</strong>.在搜索完匹配串的每一位，计算完全匹配的数目时，需要判断是否还有必要搜索下一位。对于以下三种情况，</p>
<ol>
<li>如果所有的正文件全部不能严格匹配，则再搜索下一位已经没有意义，剪枝；</li>
<li>如果前缀匹配的正文件的个数小于已有答案，再搜索下一位答案一定不会增加，剪枝；</li>
<li>如果匹配串末字符是*，当前答案小于最优答案，继续搜索一定是不会使答案增加，剪枝。</li>
</ol>
<p><strong>优化5</strong>.在搜索前先对所有的文件排序，使负文件名排在前面，有利于剪枝的提前发生。</p>
<p>上述5个优化，其中优化3是核心，也是算法的重要内容，大量编程的工作都是优化3；而优化4是关键，优化4的三个强力剪枝可以去除许多无用的状态，大大减少运行时间。</p>
<p>这道题虽然写了一天才搞定，收获却是非同一般得大。我个人认为这类题很好，很能考验构造思维能力和编程能力，甚至意志力，但近些年不论在 NOI还是NOIP，却都销声匿迹了。我预测如果今年NOI考这类题，仍然是个难题，能拿到高分的人不会多的。搜索+优化永远是一个万能算法，即使不为了 竞赛，真正掌握它也是很困难，确是很重要的。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"><sup><a href="http://www.ericbess.com/ericblog/2008/03/03/wp-codebox/#examples" target="_blank" title="WP-CodeBox HowTo?"><span style="color: #99cc00">?</span></a></sup></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p866code38'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p86638"><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
</pre></td><td class="code" id="p866code38"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOI1997 wildcard
 * Author: Guo Jiabao
 * Time: 2009.2.15 20:17
 * State: Solved
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">251</span>,MAXS<span style="color: #000080;">=</span><span style="color: #0000dd;">62</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span> CharSet<span style="color: #008000;">&#91;</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #FF0000;">&quot;0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&quot;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> File<span style="color: #008000;">&#123;</span><span style="color: #0000ff;">int</span> name<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span>,len,matchpre<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span>,precnt<span style="color: #008080;">;</span><span style="color: #0000ff;">bool</span> permission<span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,N_p,pattern<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span>,Apt<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span>,Max_Length,Ans,Nowlen,Al,ccnt<span style="color: #008080;">;</span>
File F<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> used<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">200</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> chas<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">62</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">void</span> dfs<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> len<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> CharToID<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">char</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'0'</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'9'</span><span style="color: #008000;">&#41;</span><span style="color: #0000ff;">return</span> c<span style="color: #000040;">-</span><span style="color: #FF0000;">'0'</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">&gt;=</span><span style="color: #FF0000;">'A'</span> <span style="color: #000040;">&amp;&amp;</span> c<span style="color: #000080;">&lt;=</span><span style="color: #FF0000;">'Z'</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">?</span>c<span style="color: #000040;">-</span><span style="color: #FF0000;">'A'</span><span style="color: #000040;">+</span><span style="color: #0000dd;">10</span><span style="color: #008080;">:</span>c<span style="color: #000040;">-</span><span style="color: #FF0000;">'a'</span><span style="color: #000040;">+</span><span style="color: #0000dd;">36</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">inline</span> <span style="color: #0000ff;">int</span> cmp<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>a,<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">void</span> <span style="color: #000040;">*</span>b<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span><span style="color: #0000ff;">return</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>File <span style="color: #000040;">*</span><span style="color: #008000;">&#41;</span>a<span style="color: #008000;">&#41;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>permission<span style="color: #000080;">==</span><span style="color: #0000ff;">false</span><span style="color: #008080;">?</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">:</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span><span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,k<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">char</span> c,Name<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">10</span><span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;wildcard.in&quot;</span>,<span style="color: #FF0000;">&quot;r&quot;</span>,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;wildcard.out&quot;</span>,<span style="color: #FF0000;">&quot;w&quot;</span>,<span style="color: #0000ff;">stdout</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #0000ff;">EOF</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">ungetc</span><span style="color: #008000;">&#40;</span>c,<span style="color: #0000ff;">stdin</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%s&quot;</span>,Name<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		N<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>Name<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">name</span><span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>k<span style="color: #000080;">=</span>CharToID<span style="color: #008000;">&#40;</span>Name<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			used<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">&gt;</span>Max_Length<span style="color: #008000;">&#41;</span>
			Max_Length<span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
		c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>c<span style="color: #000080;">==</span><span style="color: #FF0000;">'+'</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			N_p<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">permission</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span>
			F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">permission</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">precnt</span><span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
		c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>c<span style="color: #000080;">=</span><span style="color: #0000dd;">getchar</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000dd;">qsort</span><span style="color: #008000;">&#40;</span>F<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span>,N,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>,cmp<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;</span>MAXS<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>used<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			chas<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>ccnt<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> update<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> k<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,Newans<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,Pans<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> np<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span>,tb<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		tb<span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>j<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>j<span style="color: #000080;">&lt;=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">precnt</span><span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			tb<span style="color: #000040;">|</span><span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">matchpre</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">len</span> <span style="color: #000040;">||</span> <span style="color: #008000;">&#40;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">matchpre</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">&amp;&amp;</span> pattern<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>tb<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">permission</span> <span style="color: #008000;">&#41;</span>
				Newans<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			<span style="color: #0000ff;">else</span>
				np<span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span> <span style="color: #666666;">//匹配了负串</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">permission</span> <span style="color: #000040;">&amp;&amp;</span> F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">precnt</span><span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
			Pans<span style="color: #000040;">++</span><span style="color: #008080;">;</span> <span style="color: #666666;">//记录正串不匹配的个数</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Pans<span style="color: #000080;">==</span>N_p <span style="color: #000040;">||</span> <span style="color: #008000;">&#40;</span>N_p<span style="color: #000040;">-</span>Pans<span style="color: #000080;">&lt;</span>Ans<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #666666;">//若正串全部不匹配 或者 前缀匹配串的个数小于已有答案 剪枝</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>pattern<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> Newans<span style="color: #000080;">&lt;</span>Ans<span style="color: #008000;">&#41;</span> <span style="color: #666666;">//如果匹配串末字符是*，当前答案小于最优，继续添加一定是多余的  剪枝</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>np<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Newans<span style="color: #000080;">&gt;</span>Ans<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			Ans<span style="color: #000080;">=</span>Newans<span style="color: #008080;">;</span>
			<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>k<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
				Apt<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>pattern<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			Al<span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Newans<span style="color: #000080;">==</span>Ans <span style="color: #000040;">&amp;&amp;</span> k<span style="color: #000080;">&lt;</span>Al<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>k<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
				Apt<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>pattern<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
			Al<span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">return</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> match<span style="color: #008000;">&#40;</span>File <span style="color: #000040;">&amp;</span>F,<span style="color: #0000ff;">int</span> len<span styl