<?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/%e4%ba%8c%e5%88%86%e5%9b%be/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>清北学堂比赛 Q1 解题报告</title>
		<link>http://www.byvoid.com/blog/qbxt-q1-solution/</link>
		<comments>http://www.byvoid.com/blog/qbxt-q1-solution/#comments</comments>
		<pubDate>Sat, 02 May 2009 14:30:44 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[競賽題解]]></category>
		<category><![CDATA[LIS]]></category>
		<category><![CDATA[二分图]]></category>
		<category><![CDATA[动态规划]]></category>
		<category><![CDATA[构造]]></category>
		<category><![CDATA[清北学堂]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=1284</guid>
		<description><![CDATA[昨天晚上做了清北学堂的比赛“首届信息学在线测评大赛Q1”，名字很响亮。今天写了一份题解，发出来。 第一题:低价购买 要求求出方案数的最长单调序列(LIS)问题。我把序列先倒转了过来，... ]]></description>
			<content:encoded><![CDATA[<p>昨天晚上做了清北学堂的比赛“首届信息学在线测评大赛Q1”，名字很响亮。今天写了一份题解，发出来。</p>
<p><strong>第一题:低价购买</strong></p>
<p>要求求出方案数的最长单调序列(LIS)问题。我把序列先倒转了过来，然后求最长上升序列。由于需要去除重复序列，可以增加一个域Next[i]，定义Next[i]=min{ k | k&gt;i 且 A[k]=A[i] }，表示大于i且离i最近的Next[i]，使得第Next[i]个数与第i个数相同。如果不存在这样的数则Next[i]=无穷大。这样的话如果出现Next[i]不为0且Next[j]&lt;i可直接跳过。</p>
<p>状态设定<br />
F[i]为以第i个元素为结尾的最长上升序列的长度<br />
G[i]为以第i个元素为结尾的最长上升序列的方案数</p>
<p>状态转移方程</p>
<p>F[i] = Max{ F[j] + 1 | A[j] &lt; A[i] 且 Next[j] &gt; i }<br />
G[i] = Sum{ G[j] | F[j] + 1 = F[i] }</p>
<p>边界条件</p>
<p>G[0]=1</p>
<p>为了方便，增加一个极大的元素到序列结尾。这样目标状态为<br />
最长长度 F[N+1]-1<br />
方案数 G[N+1]</p>
<p><strong>第二题:连续串之和</strong></p>
<p>相邻元素绝对值之差必须为1，所以显然构造出的和最大的序列一定为0,1,2,3,&#8230;,N-1，和为(N-1)*N/2，最小和同理为-(N-1)*N/2。于是如果给定的S不在最大值与最小值的区间内，一定无解。</p>
<p>我们先生成一个和最大的序列，0,1,2,3,&#8230;,N-1，然后再考虑调整使得满足条件。假设当前的和与S的差为D，可以发现，无论怎样变换序列，D的奇偶性的不改变的。因为无论改变那个元素，都只能从比前一个元素多1变成少1，或者从比前一个元素少1变成多1，调整多个也是一样的，变化量为偶数。所以说，如果初始的D为奇数，则一定不可能有解。</p>
<p>余下来的情况一定为有解的情况了。把序列顺序做差，初始化每项差值都为1，则对应了0,1,2,3,&#8230;,N-1。可以发现，修改一个差值从1到-1会引起后面所有项的值减少2，总的减少量就是后面项的个数*2。这时就可以设计出算法了，从第一个差值开始尝试从1变成-1，更新当前和，直到等于S为止。最后再根据差值序列还原出原序列。时间复杂度为O(N)。</p>
<p><strong>第三题:决斗</strong></p>
<p>观察发现，如果第i个人想与第j个人决斗(i&lt;j)，i,j必须相邻，也就是i,j之间的人必须全部被打败。换句话说，如果i,j相邻，一定存在一个k(i&lt;k&lt;j)，使得i,k相邻，k与j相邻，而且i可以打败k或者j可以打败k。这样就把问题缩小了，可以以此进行动态规划。考虑到是一个环，我们可以把N个人复制一遍，接在后面。</p>
<p>设定状态<br />
F[i,j] 表示第i个人是否可以与第j个人相邻 (1&lt;=i&lt;j&lt;=N*2)，第i个人在环上另一面的映射为i+N</p>
<p>状态转移方程<br />
F[i,j]= Or { F[i,k]=F[k,j]=true | i可以打败k或j可以打败k }</p>
<p>边界条件<br />
由于i和i+1两个一定是相邻的，所以有<br />
F[i,i+1]=true</p>
<p>判断第i个人可以胜出的条件就是F[i,i+N]=true，此时i两边的人全部败了，i获胜。</p>
<p>时间复杂度O(N^3)。</p>
<p><strong>第四题:最小费用多米诺</strong></p>
<p>把棋盘上每个非障碍格子看作一个顶点，相邻两个非障碍格子对应的顶点连接一条边，权值为在这两个格子上放上多米诺方块的费用。判断是否能放满只需求出该图的最大匹配，并判断是否每个顶点都有匹配。如何求最大匹配？带花树？不，这是一个二分图！</p>
<p>为什么是二分图？因为棋盘是可以2染色的，之间有边的顶点都是相邻的，而相邻的格子必然是颜色不同的，所以这是一个二分图。</p>
<p>接下来就容易了，首先求出最大匹配，如果存在完美匹配（每个顶点都有匹配），再求最佳匹配(最小权值完备匹配)即可。</p>
<p><span id="more-1284"></span></p>
<p>下面是四个题的程序</p>
<p>第一题:低价购买</p>

<div class="wp_codebox_msgheader"><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('p1284code5'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12845"><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
</pre></td><td class="code" id="p1284code5"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: RQN Q1 低价购买
 * Author: Guo Jiabao
 * Time: 2009.5.2 21:48
 * State: Solved
 * Memo: 动态规划 LIS
*/</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;">50001</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> F<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,G<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,Next<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,Ans<span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF,Ans2<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<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;low.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;low.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>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: #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;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	Next<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<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>
		Next<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<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;">&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>A<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>i<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				Next<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>j<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>
	A<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>N<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<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: #0000dd;">memset</span><span style="color: #008000;">&#40;</span>G,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>G<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	G<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;">1</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>
		F<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: #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>i<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>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Next<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">&gt;</span>i <span style="color: #000040;">&amp;&amp;</span> A<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">&lt;</span> A<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>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<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;">&#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: #000080;">=</span> F<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: #000080;">=</span> G<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;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>F<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: #008000;">&#41;</span>
					G<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> G<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>
		F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	Ans<span style="color: #000080;">=</span>F<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	Ans2<span style="color: #000080;">=</span>G<span style="color: #008000;">&#91;</span>N<span style="color: #008000;">&#93;</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>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d %d&quot;</span>,Ans,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>第二题:连续串之和</p>

<div class="wp_codebox_msgheader"><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('p1284code6'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12846"><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
</pre></td><td class="code" id="p1284code6"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: RQN Q1 连续串之和
 * Author: Guo Jiabao
 * Time: 2009.5.1 20:01
 * State: 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> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">10001</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> A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,N,S<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;sum.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;sum.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>S<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> construct<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,Lim,Dif,k,d<span style="color: #008080;">;</span>
	Lim<span style="color: #000080;">=</span>N<span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span>N<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>
	Dif<span style="color: #000080;">=</span>Lim<span style="color: #000040;">-</span>S<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>S<span style="color: #000080;">&gt;</span>Lim <span style="color: #000040;">||</span> S<span style="color: #000080;">&lt;</span><span style="color: #000040;">-</span>Lim <span style="color: #000040;">||</span> Dif<span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;NIE&quot;</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;">2</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>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: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>i<span style="color: #000080;">&lt;=</span>N <span style="color: #000040;">&amp;&amp;</span> Dif<span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		k<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>N<span style="color: #000040;">-</span>i<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>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>Dif <span style="color: #000080;">&gt;=</span> k<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			A<span style="color: #008000;">&#91;</span>i<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>
			Dif <span style="color: #000040;">-</span><span style="color: #000080;">=</span> k<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	k<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>d<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>
	<span style="color: #008000;">&#123;</span>
		k <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>
		d<span style="color: #000040;">+</span><span style="color: #000080;">=</span>k<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>,k<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	k <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>
	d<span style="color: #000040;">+</span><span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,k<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>
	construct<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>第三题:决斗</p>

<div class="wp_codebox_msgheader"><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('p1284code7'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12847"><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
</pre></td><td class="code" id="p1284code7"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: RQN Q1 决斗
 * Author: Guo Jiabao
 * Time: 2009.5.1 20:24
 * State: 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>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<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>
&nbsp;
<span style="color: #0000ff;">bool</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: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> Beat<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: #0000ff;">int</span> N,N2,Wcnt<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> Win<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,j,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;mus.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;mus.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>
	N2<span style="color: #000080;">=</span>N<span style="color: #000040;">*</span><span style="color: #0000dd;">2</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;">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>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			Beat<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>Beat<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>N<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Beat<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span>N<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>Beat<span style="color: #008000;">&#91;</span>i<span style="color: #000040;">+</span>N<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>j<span style="color: #000040;">+</span>N<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span> c<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: #008000;">&#125;</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,l<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>N2<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>i<span style="color: #000040;">+</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>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>l<span style="color: #000080;">=</span><span style="color: #0000dd;">3</span><span style="color: #008080;">;</span>l<span style="color: #000080;">&lt;=</span>N<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>l<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>N2<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: #008000;">&#40;</span>j<span style="color: #000080;">=</span>i<span style="color: #000040;">+</span>l<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">&gt;</span>N2<span style="color: #008000;">&#41;</span>
				<span style="color: #0000ff;">break</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>j<span style="color: #000040;">-</span><span style="color: #0000dd;">1</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;">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>k<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> F<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: #000040;">&amp;&amp;</span> <span style="color: #008000;">&#40;</span>Beat<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> Beat<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><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><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: #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;">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>i<span style="color: #000040;">+</span>N<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			Wcnt<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			Win<span style="color: #008000;">&#91;</span> Wcnt <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: #008000;">&#125;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Wcnt<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>Wcnt<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;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%dn&quot;</span>,Win<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: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d&quot;</span>,Win<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>
&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: #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>第四题:最小费用多米诺</p>

<div class="wp_codebox_msgheader"><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('p1284code8'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p12848"><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
</pre></td><td class="code" id="p1284code8"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: RQN Q1 最小费用多米诺
 * Author: Guo Jiabao
 * Time: 2009.5.2 19:40
 * State: Solved
 * Memo: 棋盘2染色 二分图匹配 匈牙利 费用流
*/</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;">41</span>,MAXV<span style="color: #000080;">=</span>MAXN<span style="color: #000040;">*</span>MAXN,MAXE<span style="color: #000080;">=</span>MAXV<span style="color: #000040;">*</span><span style="color: #0000dd;">8</span>,INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> dx<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">1</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#125;</span>,dy<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">4</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #008000;">&#123;</span><span style="color: #0000dd;">1</span>,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">0</span>,<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#125;</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> Queue
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> Q<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,head,tail,size<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">bool</span> inq<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	Queue<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#123;</span>head<span style="color: #000080;">=</span>size<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span>,tail<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;">memset</span><span style="color: #008000;">&#40;</span>inq,<span style="color: #0000dd;">0</span>,<span style="color: #0000dd;">sizeof</span><span style="color: #008000;">&#40;</span>inq<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> 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>
		size<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>tail<span style="color: #000080;">&gt;=</span>MAXV<span style="color: #008000;">&#41;</span>
			tail<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		Q<span style="color: #008000;">&#91;</span>tail<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>p<span style="color: #008080;">;</span>
		inq<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>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">int</span> 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> r<span style="color: #000080;">=</span>Q<span style="color: #008000;">&#91;</span>head<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		size<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>head<span style="color: #000080;">&gt;=</span>MAXV<span style="color: #008000;">&#41;</span>
			head<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
		inq<span style="color: #008000;">&#91;</span>r<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: #0000ff;">return</span> r<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>Q<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: #000040;">*</span>op<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> t,c,v<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>ES<span style="color: #008000;">&#91;</span>MAXE<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>V<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>fe<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">struct</span> point
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> vx,vy,id,put<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: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,S,T,MatchCnt,MaxCostFlow,EC,Number<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> color<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,Match<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,sp<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,fp<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,PX<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span>,PY<span style="color: #008000;">&#91;</span>MAXV<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> vis<span style="color: #008000;">&#91;</span>MAXV<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<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;domino.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;domino.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: #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: #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>P<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: #007788;">vx</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</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: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vx</span><span style="color: #008000;">&#41;</span>
				Number<span style="color: #000040;">++</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>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: #0000dd;">scanf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%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: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vy</span><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;">bool</span> inrange<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">return</span> x<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> x<span style="color: #000080;">&lt;=</span>N <span style="color: #000040;">&amp;&amp;</span> y<span style="color: #000080;">&gt;=</span><span style="color: #0000dd;">1</span> <span style="color: #000040;">&amp;&amp;</span> y<span style="color: #000080;">&lt;=</span>M<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> dye<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> x,<span style="color: #0000ff;">int</span> y,<span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	P<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: #007788;">id</span><span style="color: #000080;">=</span><span style="color: #000040;">++</span>T<span style="color: #008080;">;</span>
	PX<span style="color: #008000;">&#91;</span>T<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>x<span style="color: #008080;">;</span> PY<span style="color: #008000;">&#91;</span>T<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>y<span style="color: #008080;">;</span>
	color<span style="color: #008000;">&#91;</span>T<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</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;">4</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;">int</span> px<span style="color: #000080;">=</span>x<span style="color: #000040;">+</span>dx<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span>,py<span style="color: #000080;">=</span>y<span style="color: #000040;">+</span>dy<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>inrange<span style="color: #008000;">&#40;</span>px,py<span style="color: #008000;">&#41;</span> <span style="color: #000040;">&amp;&amp;</span> P<span style="color: #008000;">&#91;</span>px<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>py<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vx</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>P<span style="color: #008000;">&#91;</span>px<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>py<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			dye<span style="color: #008000;">&#40;</span>px,py,<span style="color: #0000dd;">3</span><span style="color: #000040;">-</span>c<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: #0000ff;">inline</span> <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> c,<span style="color: #0000ff;">int</span> v<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	ES<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>EC<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #000080;">=</span>b<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">=</span>c<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #000080;">=</span>v<span style="color: #008080;">;</span>
	ES<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>EC<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">next</span><span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>ES<span style="color: #000040;">+</span>EC<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #000080;">=</span>a<span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #000080;">=</span><span style="color: #000040;">-</span>v<span style="color: #008080;">;</span>
	V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span> V<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<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,px,py,a,b,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>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;">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: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vx</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>P<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: #007788;">id</span><span style="color: #008000;">&#41;</span>
				dye<span style="color: #008000;">&#40;</span>i,j,<span style="color: #0000dd;">1</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>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;">2</span><span style="color: #008080;">;</span>k<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				px<span style="color: #000080;">=</span>i<span style="color: #000040;">+</span>dx<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span>,py<span style="color: #000080;">=</span>j<span style="color: #000040;">+</span>dy<span style="color: #008000;">&#91;</span>k<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>inrange<span style="color: #008000;">&#40;</span>px,py<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					a<span style="color: #000080;">=</span>P<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: #007788;">id</span><span style="color: #008080;">;</span>
					b<span style="color: #000080;">=</span>P<span style="color: #008000;">&#91;</span>px<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>py<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">id</span><span style="color: #008080;">;</span>
					<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>a<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span> <span style="color: #000040;">||</span> b<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><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>color<span style="color: #008000;">&#91;</span>b<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span>
					<span style="color: #008000;">&#123;</span>
						v<span style="color: #000080;">=</span>a<span style="color: #008080;">;</span> a<span style="color: #000080;">=</span>b<span style="color: #008080;">;</span> b<span style="color: #000080;">=</span>v<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>
						v <span style="color: #000080;">=</span> P<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: #007788;">vx</span> <span style="color: #000040;">+</span> P<span style="color: #008000;">&#91;</span>px<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>py<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vx</span><span style="color: #008080;">;</span>
					<span style="color: #0000ff;">else</span>
						v <span style="color: #000080;">=</span> P<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: #007788;">vy</span> <span style="color: #000040;">+</span> P<span style="color: #008000;">&#91;</span>px<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#91;</span>py<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">vy</span><span style="color: #008080;">;</span>
					addedge<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">1</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>
	S<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>T<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;">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;">if</span> <span style="color: #008000;">&#40;</span>color<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: #008000;">&#41;</span>
			addedge<span style="color: #008000;">&#40;</span>S,i,<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: #0000ff;">else</span>
			addedge<span style="color: #008000;">&#40;</span>i,T,<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: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</span> path<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>edge <span style="color: #000040;">*</span>e<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>e<span style="color: #008080;">;</span>e<span style="color: #000080;">=</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000ff;">int</span> j<span style="color: #000080;">=</span>e<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><span style="color: #000040;">!</span>vis<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">&gt;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			vis<span style="color: #008000;">&#91;</span>j<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>Match<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: #000040;">||</span> path<span style="color: #008000;">&#40;</span>Match<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				Match<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>i<span style="color: #008080;">;</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: #008000;">&#125;</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;">bool</span> hungary<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>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;">if</span> <span style="color: #008000;">&#40;</span>color<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: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>Match<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>
			<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>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>path<span style="color: #008000;">&#40;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
				MatchCnt<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;">return</span> MatchCnt<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #000080;">==</span>Number<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">bool</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,j<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>S<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>
		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>
	sp<span style="color: #008000;">&#91;</span>S<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	Q.<span style="color: #007788;">ins</span><span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>Q.<span style="color: #007788;">size</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		i<span style="color: #000080;">=</span>Q.<span style="color: #007788;">pop</span><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>e<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>e<span style="color: #008080;">;</span>e<span style="color: #000080;">=</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			j<span style="color: #000080;">=</span>e<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>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c <span style="color: #000040;">&amp;&amp;</span> sp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e<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>j<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>j<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> e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008080;">;</span>
				fp<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<span style="color: #008080;">;</span>
				fe<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> e<span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>Q.<span style="color: #007788;">inq</span><span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
					Q.<span style="color: #007788;">ins</span><span style="color: #008000;">&#40;</span>j<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: #0000ff;">return</span> sp<span style="color: #008000;">&#91;</span>T<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> CostFlow<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,delta<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>spfa<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		delta<span style="color: #000080;">=</span>INF<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>T<span style="color: #008080;">;</span>fp<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>fp<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>fe<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c <span style="color: #000080;">&lt;</span> delta<span style="color: #008000;">&#41;</span>
				delta <span style="color: #000080;">=</span> fe<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000080;">=</span>T<span style="color: #008080;">;</span>fe<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>fp<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>
			fe<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c <span style="color: #000040;">-</span><span style="color: #000080;">=</span> delta<span style="color: #008080;">;</span>
			fe<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>op<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c <span style="color: #000040;">+</span><span style="color: #000080;">=</span>delta<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		MaxCostFlow <span style="color: #000040;">+</span><span style="color: #000080;">=</span> delta <span style="color: #000040;">*</span> sp<span style="color: #008000;">&#91;</span>T<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>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;">if</span> <span style="color: #008000;">&#40;</span>color<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: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>edge <span style="color: #000040;">*</span>e<span style="color: #000080;">=</span>V<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>e<span style="color: #008080;">;</span>e<span style="color: #000080;">=</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>next<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>c<span style="color: #000080;">==</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
				<span style="color: #008000;">&#123;</span>
					Match<span style="color: #008000;">&#91;</span>e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> i<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: #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: #0000ff;">int</span> Ans<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: #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>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;">if</span> <span style="color: #008000;">&#40;</span>color<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			j<span style="color: #000080;">=</span>Match<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>PX<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>PX<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span>
				P<span style="color: #008000;">&#91;</span> PX<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> PY<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">put</span> <span style="color: #000080;">=</span> P<span style="color: #008000;">&#91;</span> PX<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> PY<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">put</span> <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: #008000;">&#91;</span> PX<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> PY<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">put</span> <span style="color: #000080;">=</span> P<span style="color: #008000;">&#91;</span> PX<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> PY<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #008000;">&#93;</span>.<span style="color: #007788;">put</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: #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>M<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>,P<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: #007788;">put</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;%d&quot;</span>,P<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: #007788;">put</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>N<span style="color: #008000;">&#41;</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: #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>
	makegraph<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>hungary<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		CostFlow<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		print<span style="color: #008000;">&#40;</span>MaxCostFlow<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
	<span style="color: #0000ff;">else</span>
		print<span style="color: #008000;">&#40;</span>MatchCnt<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>
	<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><p>低价购买</p>
<table border="0">
<tbody>
<tr>
<td class="Text0" height="28" bgcolor="#84c1ff">描述</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">“ 低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者，你必须遵循以下的问题建议:“低价购买；再低价购买”。每次你购买一 支股票,你必须用低于你上次购买它的价格购买它。买的次数越多越好!你的目标是在遵循以上建议的前提下，求你最多能购买股票的次数。你将被给出一段时间内 一支股票每天的出售价(2^16范围内的正整数)，你可以选择在哪些天购买这支股票。每次购买都必须遵循“低价购买；再低价购买”的原则。写一个程序计算 最大购买次数。</p>
<p>这里是某支股票的价格清单：<br />
日期  1  2  3  4  5  6  7  8  9 10 11 12<br />
价格 68 69 54 64 68 64 70 67 78 62 98 87</p>
<p>最优秀的投资者可以购买最多4次股票，可行方案中的一种是：<br />
日期    2  5  6 10<br />
价格   69 68 64 62</p>
<p>数据规模<br />
对于100%的数据，1 &lt;= N &lt;= 5000。</p>
<p></span></td>
</tr>
<tr>
<td class="Text0" height="24" bgcolor="#84c1ff">输入格式</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">第1行: N，股票发行天数。<br />
第2行: N个数，是每天的股票价格。<br />
</span></td>
</tr>
<tr>
<td class="Text0" bgcolor="#84c1ff">输出格式</td>
</tr>
<tr class="TextN">
<td class="Text0"><span class="Text4">输出仅一行包含两个数:最大购买次数和拥有最大购买次数的方案数(&lt;=2^31)当二种方案“看起来一样”时（就是说它们构成的价格队列一样的时候）,这2种方案被认为是相同的。</span></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输入</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea" readonly="readonly">12 68 69 54 64 68 64 70 67 78 62 98 87 </textarea></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输出</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea2" readonly="readonly">4 2</textarea></td>
</tr>
</tbody>
</table>
</blockquote>
<blockquote><p>连续串之和</p>
<table border="0">
<tbody>
<tr>
<td class="Text0" height="28" bgcolor="#84c1ff">描述</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">我们定义连续串为一串整数，它的第一个元素为0，并且任两个相邻元素之差的绝对值为1。更精确的说，如果[a1, a2, …, an]为一个连续串，那么有：<br />
	对于任意的1&lt;k&lt;n，|ak &#8211; ak+1|=1<br />
	a1=0<br />
任务：<br />
写一个程序：<br />
	读入连续串的长度和连续串中所有元素的和；<br />
	找出一个给定长度的连续串，使其所有元素的和与给定的和相等，或者指出这样的连续串不存在。</p>
<p>数据规模<br />
对于100%的数据，1 &lt;= n &lt;= 10000，|S| &lt;= 50000000。<br />
输出任意一个可行解即可，本题的Special Judge已经由RenQing编写完毕.<br />
最新更新[RQ刚刚出完数据...所以来透露一下]:<br />
对于30%的数据 n&lt;=12 s&lt;=30<br />
对于60%的数据 n&lt;=1000 s&lt;=1500<br />
对于100%的数据 n&lt;=10000 s&lt;=50000000</p>
<p></span></td>
</tr>
<tr>
<td class="Text0" height="24" bgcolor="#84c1ff">输入格式</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">输入的第一行有一个整数n，表示连续串中元素的个数。第二行为一个整数S，表示连续串中所有元素之和。</span></td>
</tr>
<tr>
<td class="Text0" bgcolor="#84c1ff">输出格式</td>
</tr>
<tr class="TextN">
<td class="Text0"><span class="Text4">如果能够找到满足条件的连续串，你应当输出n个整数（每行一个），表示连续串中的各个元素（第k个元素输出在第k行）。否则，文件应该只包含一个单词NIE。</span></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输入</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea" readonly="readonly">8 4 </textarea></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输出</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea2" readonly="readonly">0 1 2 1 0 -1 0 1</textarea></td>
</tr>
</tbody>
</table>
</blockquote>
<blockquote><p>决斗</p>
<table border="0">
<tbody>
<tr>
<td class="Text0" height="28" bgcolor="#84c1ff">描述</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">Michel最近迷上了买彩票。现在，某赌场就一轮决斗的结果开设了赌局。这个赌局同样被Michel盯上了，他决定购买这个彩票。<br />
当然，身为有教养有文化的人，Michel买彩票并不是胡乱买的。他在买之前进行了详尽的市场调查，并拿到了任意两个选手对决后的胜败情况。可以假定正式比赛的时候决斗后果也是一样的。<br />
同时决斗的规则是这样的：<br />
首先，选手们围成一个圈。每一回合随机抽出一个选手的号码，让他和他右边的选手决斗。开始时，1号右边的是2号，2号右边的试三号，依此类推。特别的，n号右边的是1号。战败的选手则退出战场。例如2号战败，则1号右边的就变成了3号。<br />
现在，他找到了你，希望你能告诉他哪些选手可能赢。</p>
<p>数据范围：<br />
对于30％的数据，n=5<br />
对于100％的数据，1&lt;=n&lt;=500</p>
<p>[感谢:陈启峰出题,清北学堂提供]</p>
<p></span></td>
</tr>
<tr>
<td class="Text0" height="24" bgcolor="#84c1ff">输入格式</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">输入数据的第一行为一个整数n，表示有n个选手。<br />
接下来n行，每行n个整数，第I+1行第J列表示第I个选手与第J个选手对决后的胜败情况，0表示选手I失败，1表示选手I获胜。</span></td>
</tr>
<tr>
<td class="Text0" bgcolor="#84c1ff">输出格式</td>
</tr>
<tr class="TextN">
<td class="Text0"><span class="Text4">输出数据的第一行为一个整数k，表示有多少选手可能赢。<br />
接下来k行，每行一个整数，从小到大输出这些选手的编号。</span></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输入</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea" readonly="readonly">2 0 0 1 0</textarea></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输出</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea2" readonly="readonly">1 2</textarea></td>
</tr>
</tbody>
</table>
</blockquote>
<blockquote><p>最小费用多米诺</p>
<table border="0">
<tbody>
<tr>
<td class="Text0" height="28" bgcolor="#84c1ff">描述</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">在 N*M 的棋盘上互不覆盖地放置 1*2 和 2*1 的多米诺方块，有一些格子上有障碍，这些格子不能放置多米诺方块。在每个没有障碍的格子上有两个费用值，分别表示这个格子上横放和竖放多米诺方块所需的费 用。试问存不存在一种放置多米诺的方案，能放满所有无障碍的格子。若存在，求出完成放置的最小费用；若不存在，求出最多能放置多少个多米诺。</p>
<p>数据规模<br />
保证第一行的答案不超过 2^30。<br />
对于 30% 的数据，N, M &lt;= 5。<br />
对于 80% 的数据，N, M 中至少有一个不超过8。<br />
对于 100% 的数据，N, M &lt;= 40。</p>
<p>备注<br />
本题设有部分分，对于每种情况，如果你的程序只输出了第一行且答案正确，可以得到该测试点 70% 的分数。但是如果你的程序输出了放置方案而方案不正确，该测试点得0分。<br />
[感谢题目作者wish]</p>
<p></span></td>
</tr>
<tr>
<td class="Text0" height="24" bgcolor="#84c1ff">输入格式</td>
</tr>
<tr class="TextN">
<td class="Text0" height="24"><span class="Text4">第一行两个正整数 N 和 M，表示棋盘共 N 行 M 列。<br />
后为两个 N*M 的矩阵，分别表示棋盘每个格子横放和竖放多米诺的费用。费用为正整数，若费用为0，则格子是障碍格（保证障碍格两个费用均为0）。<br />
</span></td>
</tr>
<tr>
<td class="Text0" bgcolor="#84c1ff">输出格式</td>
</tr>
<tr class="TextN">
<td class="Text0"><span class="Text4">若存在至少一种放置方案，则第一行输出最小费用，后跟一个 N*M 的矩阵，表示最小费用方案。<br />
若不存在满足要求的放置方案，则第一行输出最多能够放置多少个多米诺，后跟一个 N*M 的矩阵，输出一种放置方案。<br />
方案可能有很多种，只需输出任意一种即可。<br />
输出的方案中，0表示这个格子不放置多米诺，1表示这个格子的多米诺横放，2 表示这个格子的多米诺竖放。<br />
</span></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输入</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea" readonly="readonly">3 4 3 5 3 2 3 0 0 3 9 8 2 3 2 8 4 4 8 0 0 2 1 4 3 8 </textarea></td>
</tr>
<tr>
<td class="Text0" align="left" valign="top" bgcolor="#84c1ff">样例输出</td>
</tr>
<tr>
<td class="Text0" align="left" valign="top"><textarea cols="80" rows="4" name="textarea2" readonly="readonly">42 1 1 1 1 2 0 0 2 2 1 1 2 </textarea></td>
</tr>
</tbody>
</table>
</blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/ural-1102-1146/" title="Ural 1102 1112 1119 1138 1146">Ural 1102 1112 1119 1138 1146</a></li><li><a href="http://www.byvoid.com/blog/ural-1031-1078/" title="Ural 1031 1039 1056 1073 1078">Ural 1031 1039 1056 1073 1078</a></li><li><a href="http://www.byvoid.com/blog/noi-2009-treapmod/" title="NOI 2009 二叉查找树">NOI 2009 二叉查找树</a></li><li><a href="http://www.byvoid.com/blog/noi-2009-poet/" title="NOI 2009 诗人小G">NOI 2009 诗人小G</a></li><li><a href="http://www.byvoid.com/blog/noi-2006-network/" title="NOI 2006 网络收费">NOI 2006 网络收费</a></li><li><a href="http://www.byvoid.com/blog/noi-2005-cchkk/" title="NOI 2005 聪聪与可可">NOI 2005 聪聪与可可</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/qbxt-q1-solution/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>二分图带权匹配 KM算法与费用流模型建立</title>
		<link>http://www.byvoid.com/blog/match-km/</link>
		<comments>http://www.byvoid.com/blog/match-km/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 06:03:43 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[計算機科學]]></category>
		<category><![CDATA[KM]]></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=991</guid>
		<description><![CDATA[[二分图带权匹配与最佳匹配] 什么是二分图的带权匹配？二分图的带权匹配就是求出一个匹配集合，使得集合中边的权值之和最大或最小。而二分图的最佳匹配则一定为完备匹配，在此基础上... ]]></description>
			<content:encoded><![CDATA[<p><strong>[二分图带权匹配与最佳匹配]</strong></p>
<p>什么是二分图的带权匹配？二分图的带权匹配就是求出一个匹配集合，使得集合中边的权值之和最大或最小。而二分图的最佳匹配则一定为<strong>完备匹配</strong>，在此基础上，才要求匹配的边权值之和最大或最小。二分图的<strong>带权匹配与最佳匹配不等价，也不互相包含</strong>。</p>
<p>我们可以使用KM算法实现求二分图的最佳匹配。方法我不再赘述，可以参考<a href="http://cuitianyi.com/blog/%E6%B1%82%E6%9C%80%E5%A4%A7%E6%9D%83%E4%BA%8C%E5%88%86%E5%8C%B9%E9%85%8D%E7%9A%84km%E7%AE%97%E6%B3%95/">tianyi的讲解</a>。KM算法可以实现为O(N^3)。</p>
<p><strong>[KM算法的几种转化]</strong></p>
<p>KM算法是求最大权完备匹配，如果要求最小权完备匹配怎么办？方法很简单，只需将所有的边权值取其相反数，求最大权完备匹配，匹配的值再取相反数即可。</p>
<p>KM算法的运行要求是<strong>必须存在一个完备匹配</strong>，如果求一个最大权匹配(不一定完备)该如何办？依然很简单，把不存在的边权值赋为0。</p>
<p>KM算法求得的最大权匹配是<strong>边权值和</strong>最大，如果我想要<strong>边权之积</strong>最大，又怎样转化？还是不难办到，每条边权取<span style="text-decoration: underline;">自然对数</span>，然后求最大和权匹配，求得的结果a再算出e^a就是最大积匹配。至于精度问题则没有更好的办法了。</p>
<p><strong>[求最小(大)权匹配的费用流建模方法]</strong></p>
<p>求最小(大)权匹配，可以用最小(大)费用最大流的方法。和二分图最大匹配的构图方法类似，添加附加源S和附加汇T，从S向二分图X集合中每个顶点连接一条权值为0，容量为1的有向边，从Y集合中每个顶点向T也连接一条权值为0，容量为1的有向边。然后把原有的边变成容量为1，权值不变的有向边。求从S到T的最小(大)费用最大流，就能求得最小(大)权匹配。</p>
<p>上述建模求最大权匹配的方法求得的<strong>一定</strong>是最佳匹配(如果存在完备匹配)，因为S到X集合每条边全部满流。如下图所示，最小费用最大流为2。</p>
<p><img class="alignnone size-full wp-image-999" title="km1" src="http://www.byvoid.com/blog/wp-content/uploads/2009/03/km1.png" alt="km1" width="486" height="223" /></p>
<p>要求最大权匹配(不一定完备匹配)。如下图，只需再引入一个顶点A，从X集合的每个顶点向A连接一条容量为1，权值为0的边，然后再由A向T连接一条权值为0，容量不小于|X|的边，求最大费用最大流，这时是100。</p>
<p><img class="alignnone size-full wp-image-1000" title="km2" src="http://www.byvoid.com/blog/wp-content/uploads/2009/03/km2.png" alt="km2" width="486" height="336" /></p>
<p>最小权匹配也类似，不过新加的边权要为一个极大值，大于所有已有边权值。</p>
<p><strong>[KM算法与费用流的比较]</strong></p>
<p>从理论上分析，KM算法的时间复杂度比费用流要好，但是实际上和较好的费用流算法比起来运行效率是差不多的，KM算法优势仅仅在于编程容易。<del datetime="2009-05-02T11:28:21+00:00">KM算法也有其不可避免的局限性，就是<strong>必须用邻接矩阵来表示</strong>。这样会浪费很多的空间，尤其是图相当稀疏的时候。</del>而对于十分稀疏的图，许多优秀的费用流算法效率是很高的。这并不说明KM算法不如费用流，毕竟在信息学竞赛中，编程的复杂度也是一个相当重要的需要考虑的因素。</p>
<p><em><a href="http://www.byvoid.com/">BYVoid</a> 原创讲解，转载请注明。</em></p>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/ural-1076/" title="Ural 1076 Trash">Ural 1076 Trash</a></li><li><a href="http://www.byvoid.com/blog/sign-solution/" title="糊涂的记者 解题报告">糊涂的记者 解题报告</a></li><li><a href="http://www.byvoid.com/blog/ctsc2000-cupid/" title="CTSC2000 丘比特的烦恼">CTSC2000 丘比特的烦恼</a></li><li><a href="http://www.byvoid.com/blog/noip2008-message-costflow/" title="NOIP2008 传纸条 费用流建模">NOIP2008 传纸条 费用流建模</a></li><li><a href="http://www.byvoid.com/blog/qbxt-q1-solution/" title="清北学堂比赛 Q1 解题报告">清北学堂比赛 Q1 解题报告</a></li><li><a href="http://www.byvoid.com/blog/pku-1469/" title="pku 1469 courses">pku 1469 courses</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/match-km/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>POI 2001 Peaceful Commission 和平委员会</title>
		<link>http://www.byvoid.com/blog/poi-2001-spo/</link>
		<comments>http://www.byvoid.com/blog/poi-2001-spo/#comments</comments>
		<pubDate>Tue, 03 Feb 2009 04:54:46 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[POI]]></category>
		<category><![CDATA[2001]]></category>
		<category><![CDATA[二分图]]></category>
		<category><![CDATA[姊妹顶点]]></category>
		<category><![CDATA[染色]]></category>
		<category><![CDATA[连通分量]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=826</guid>
		<description><![CDATA[把每个政党的两个议员看作两个顶点，不能相处的议员之间连接一条边。类似于二分图的染色，但又不是严格的二分图。我们规定第2*i-1和2*i个顶 点为姊妹顶点。对于图中的每个连通分量，尝... ]]></description>
			<content:encoded><![CDATA[<p>把每个政党的两个议员看作两个顶点，不能相处的议员之间连接一条边。类似于二分图的染色，但又不是严格的二分图。我们规定第2*i-1和2*i个顶 点为姊妹顶点。对于图中的每个连通分量，尝试从首个顶点开始访问染色，规定其加入理事会，然后访问该顶点的邻接顶点的姊妹顶点。遍历中如果发现了一对姊妹 顶点都被加入了理事会，则是不合法的，染色失败。如果染色成功，继续查找下一个连通分量，否则重新尝试从首个顶点的姊妹顶点开始访问染色，如果染色成功， 继续查找下一个连通分量，否则染色失败，不可能组建理事会。</p>
<p>该算法巧妙的类比了二分图染色，并根据该题的特点，设计出合适的方案，时间复杂度为O(M)。<br />
<span id="more-826"></span></p>

<div class="wp_codebox_msgheader"><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('p826code10'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p82610"><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
</pre></td><td class="code" id="p826code10"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: POI2001 spo
 * Author: Guo Jiabao
 * Time: 2009.1.28 0:58
 * 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>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">16001</span>,MAXM<span style="color: #000080;">=</span><span style="color: #0000dd;">36001</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> list
<span style="color: #008000;">&#123;</span>
	list <span style="color: #000040;">*</span>next<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> t<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">struct</span> adjl
<span style="color: #008000;">&#123;</span>
	list <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>
&nbsp;
adjl A<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
list L<span style="color: #008000;">&#91;</span>MAXM<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,M,Lc<span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</span> S<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,TS<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> addedge<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: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">f</span><span style="color: #008000;">&#41;</span>
		A<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">=</span>A<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><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>Lc<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span>
		A<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">l</span><span style="color: #000080;">=</span>A<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">f</span><span style="color: #000080;">=</span><span style="color: #000040;">&amp;</span>L<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>Lc<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	L<span style="color: #008000;">&#91;</span>Lc<span style="color: #008000;">&#93;</span>.<span style="color: #007788;">t</span><span style="color: #000080;">=</span>b<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</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<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;spo.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;spo.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>a,<span style="color: #000040;">&amp;</span>b<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		addedge<span style="color: #008000;">&#40;</span>a,b<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		addedge<span style="color: #008000;">&#40;</span>b,a<span style="color: #008000;">&#41;</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> getop<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;">if</span> <span style="color: #008000;">&#40;</span>k<span style="color: #000040;">%</span><span style="color:#800080;">2</span><span style="color: #008000;">&#41;</span> <span style="color: #0000ff;">return</span> k<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">return</span> k<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> deal<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> a<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> b,bo,ao<span style="color: #008080;">;</span>
	S<span style="color: #008000;">&#91;</span>a<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
	ao<span style="color: #000080;">=</span>getop<span style="color: #008000;">&#40;</span>a<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>S<span style="color: #008000;">&#91;</span>ao<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: #0000ff;">for</span> <span style="color: #008000;">&#40;</span>list <span style="color: #000040;">*</span>k<span style="color: #000080;">=</span>A<span style="color: #008000;">&#91;</span>a<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>
		b<span style="color: #000080;">=</span>k<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>t<span style="color: #008080;">;</span>
		bo<span style="color: #000080;">=</span>getop<span style="color: #008000;">&#40;</span>b<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>S<span style="color: #008000;">&#91;</span>bo<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">!</span>deal<span style="color: #008000;">&#40;</span>bo<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>
&nbsp;
<span style="color: #0000ff;">void</span> print<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">bool</span> k<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: #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>N<span style="color: #000040;">*</span><span style="color: #0000dd;">2</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>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</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>,i<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: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;NIEn&quot;</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> cpy<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">bool</span> <span style="color: #000040;">*</span>A,<span style="color: #0000ff;">bool</span> <span style="color: #000040;">*</span>B<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>N<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>i<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		B<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</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: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">bool</span> solve<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;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>deal<span style="color: #008000;">&#40;</span>k<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		cpy<span style="color: #008000;">&#40;</span>TS,S<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>deal<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: #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>
	cpy<span style="color: #008000;">&#40;</span>S,TS<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</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> compute<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>N<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span><span style="color: #008080;">;</span>i<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>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>S<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>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>solve<span style="color: #008000;">&#40;</span>i<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				print<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">false</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: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	print<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">true</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>
	compute<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><!--more--></p>
<blockquote>
<h2><span class="mw-headline">和平委员会 </span></h2>
<p>根据宪法，Byteland民主共和国的公众和平委员会应该在国会中通过立法程序来创立。 不幸的是，由于某些党派代表之间的不和睦而使得这件事存在障碍。</p>
<p>此委员会必须满足下列条件：</p>
<ul>
<li>每个党派都在委员会中恰有1个代表，</li>
<li>如果2个代表彼此厌恶，则他们不能都属于委员会。</li>
</ul>
<p>每个党在议会中有2个代表。代表从1编号到2n。 编号为2i-1和2i的代表属于第I个党派。</p>
<p>任务</p>
<p>写一程序：</p>
<ul>
<li>从文本文件读入党派的数量和关系不友好的代表对，</li>
<li>计算决定建立和平委员会是否可能，若行，则列出委员会的成员表，</li>
<li>结果写入文本文件。</li>
</ul>
<p>输入</p>
<p>在文本文件的第一个行有2非负整数n和m。 他们各自表示：党派的数量n，1 &lt; =n &lt; =8000和不友好的代表对m，0 &lt;=m &lt;=20000。 在下面m行的每行为一对整数a,b，1&lt;=a &lt;b&lt;=2n，中间用单个空格隔开。 它们表示代表a,b互相厌恶。</p>
<p>输出</p>
<p>如果委员会不能创立，文本文件中应该包括单词NIE。若能够成立，文本文件SPO.OUT中应该包括n个从区间1到2n选出的整数，按升序写出，每行一个，这些数字为委员会中代表的编号。如果委员会能以多种方法形成，程序可以只写他们的某一个。</p>
<p>样品输入</p>
<pre>3 2
1 3
2 4</pre>
<p>样品输出</p>
<pre>1
4
5</pre>
</blockquote>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/poi-2001-kop/" title="POI 2001 Glodmine 金矿">POI 2001 Glodmine 金矿</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-pch/" title="POI 2001 Wandering flea trainers 跳舞蝇的教练">POI 2001 Wandering flea trainers 跳舞蝇的教练</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-pod/" title="POI 2001 Travel 旅行">POI 2001 Travel 旅行</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-mro/" title="POI 2001 Ants and the ladybug 蚂蚁和瓢虫">POI 2001 Ants and the ladybug 蚂蚁和瓢虫</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-ant/" title="POI 2001 Antiprime Numbers 反质数">POI 2001 Antiprime Numbers 反质数</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-prz/" title="POI 2001 Intervals 区间">POI 2001 Intervals 区间</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/poi-2001-spo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>NOIP2008 双栈排序 twostack 题解</title>
		<link>http://www.byvoid.com/blog/noip2008-twostack/</link>
		<comments>http://www.byvoid.com/blog/noip2008-twostack/#comments</comments>
		<pubDate>Tue, 09 Dec 2008 14:22:28 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[競賽題解]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[NOIP]]></category>
		<category><![CDATA[二分图]]></category>
		<category><![CDATA[染色]]></category>
		<category><![CDATA[题解]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=640</guid>
		<description><![CDATA[这道题的错误做法很多,但是实际在考场上，大多数人拿到了30分。错误做法却能得满分的也很多,正确的算法是基于二分图的算法。注意，不是二分图匹配！ 分析条件，我们把问题抽象为数学模... ]]></description>
			<content:encoded><![CDATA[<p>这道题的错误做法很多,但是实际在考场上，大多数人拿到了30分。错误做法却能得满分的也很多,正确的算法是基于二分图的算法。注意，不是二分图匹配！</p>
<p>分析条件，我们把问题抽象为数学模型。设输入序列为S，考虑S[i],S[j]两个元素不能进入同一个栈的条件.注意,这里所说的&quot;S[i],S[j]两个元素不能进入同一个栈&quot;,不是说仅仅不能同时在一个栈中,而是自始至终不能进入一个栈,即如果有解,那么S[i],S[j]一定进入过的栈不同.</p>
<p><strong>结论P</strong>: S[i],S[j]两个元素不能进入同一个栈 &lt;=&gt; 存在k,满足i&lt;j&lt;k,使得S[k]&lt;S[i]&lt;S[j].<br />
证明略过,请参考sqybi.尝试后可以发现结论P是正确的.</p>
<p>把每个元素按照输入序列中的顺序编号,看作一个图中的每个顶点.这时,我们对所有的(i,j)满足i&lt;j,判断是否满足结论P,即S[i],S[j]两个元素能否进入同一个栈.如果满足P,则在i,j之间连接一条边.</p>
<p>我们对图染色,由于只有两个栈,我们得到的图必须是二分图才能满足条件.由于要求字典序最小,即尽量要进入栈1,我们按编号递增的顺序从每个未染色的顶点开始染色,相邻的顶点染上不同的色,如果发生冲突,则是无解的.否则我们可以得到每个顶点颜色,即应该进入的栈.</p>
<p>接下来就是输出序列了,知道了每个元素的决策,直接模拟了.</p>
<p>在判断数对(i,j)是否满足P时,枚举检查是否存在k的时间复杂度是O(n),则总的时间复杂度是O(n^3),对于n=1000是太大了.这原因在于过多得枚举了k,我们可以用动态规划把枚举k变为O(1)的算法.</p>
<p>设F[i]为Min{S[i],S[i+1],S[i+2]..S[n-1],S[n]},状态转移方程为F[i]=Min{ S[i] , F[i+1] }.边界为F[N+1]=极大的值.</p>
<p>判断数对(i,j)是否满足P,只需判断(S[i]&lt;S[j] 并且 F[j+1]&lt;S[i])即可.时间复杂度为O(n^2).</p>
<p>参考资料:sqybi的题解</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('p640code12'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p64012"><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
</pre></td><td class="code" id="p640code12"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOIP2008 twostack
 * Author: Guo Jiabao
 * Time: 2008.12.9 21:22: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>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXN<span style="color: #000080;">=</span><span style="color: #0000dd;">1002</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> INF<span style="color: #000080;">=</span><span style="color: #208080;">0x7FFFFFFF</span><span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">class</span> tStack
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">private</span><span style="color: #008080;">:</span>
		<span style="color: #0000ff;">int</span> top<span style="color: #008080;">;</span>
		<span style="color: #0000ff;">int</span> S<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">public</span><span style="color: #008080;">:</span>
		tStack<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008080;">:</span> top<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: #008000;">&#125;</span>
		<span style="color: #0000ff;">void</span> ins<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>
			S<span style="color: #008000;">&#91;</span><span style="color: #000040;">++</span>top<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>k<span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">int</span> tp<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">return</span> S<span style="color: #008000;">&#91;</span>top<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">void</span> pop<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			top<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: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> S<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,F<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,bel<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
<span style="color: #0000ff;">bool</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><span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> N,top1,top2<span style="color: #008080;">;</span>
tStack T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">3</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<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;twostack.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;twostack.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>S<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: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> noanswer<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;0&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>
&nbsp;
<span style="color: #0000ff;">void</span> color<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i,<span style="color: #0000ff;">int</span> c<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	bel<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>c<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">int</span> j<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>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>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>bel<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span><span style="color: #000080;">==</span>c<span style="color: #008000;">&#41;</span> <span style="color: #666666;">//conflict : not a bipartite graph</span>
			<span style="color: #008000;">&#123;</span>
				noanswer<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: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">!</span>bel<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>
				color<span style="color: #008000;">&#40;</span>j,<span style="color: #0000dd;">3</span><span style="color: #000040;">-</span>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// color the opposite color 1&lt;-&gt;2</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> dye<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>
	F<span style="color: #008000;">&#91;</span>N<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>INF<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>
		F<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span>S<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>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: #000080;">&lt;</span>F<span style="color: #008000;">&#91;</span>i<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: #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: #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: #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>i<span style="color: #000040;">+</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>S<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">&lt;</span>S<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000040;">&amp;&amp;</span> F<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;">&lt;</span>S<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>
				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>adjm<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: #0000ff;">true</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;">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>bel<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>
			color<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: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</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;">int</span> i,should<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span>,s<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>
		s<span style="color: #000080;">=</span>bel<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>s<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: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">ins</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;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;a &quot;</span><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>
			T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">ins</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;">&#41;</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><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tp</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span>should <span style="color: #000040;">||</span> T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tp</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span>should<span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">tp</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #000080;">==</span>should<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">pop</span><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;b&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>should<span style="color: #000040;">!</span><span style="color: #000080;">=</span>N<span style="color: #008000;">&#41;</span>
					<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				should<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span>
			<span style="color: #008000;">&#123;</span>
				T<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">2</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">pop</span><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;d&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>should<span style="color: #000040;">!</span><span style="color: #000080;">=</span>N<span style="color: #008000;">&#41;</span>
					<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot; &quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
				should<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: #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>
	dye<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: #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>

<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/noip2008-message-costflow/" title="NOIP2008 传纸条 费用流建模">NOIP2008 传纸条 费用流建模</a></li><li><a href="http://www.byvoid.com/blog/poi-2001-spo/" title="POI 2001 Peaceful Commission 和平委员会">POI 2001 Peaceful Commission 和平委员会</a></li><li><a href="http://www.byvoid.com/blog/noip2008-return/" title="NOIP2008归来">NOIP2008归来</a></li><li><a href="http://www.byvoid.com/blog/noip-2008-train/" title="NOIP2008集训">NOIP2008集训</a></li><li><a href="http://www.byvoid.com/blog/noip-allsolutions/" title="NOIP2000-2007 全部题解">NOIP2000-2007 全部题解</a></li><li><a href="http://www.byvoid.com/blog/my-highschool-2/" title="我的高中（二）爲NOIP奮鬭的日子">我的高中（二）爲NOIP奮鬭的日子</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/noip2008-twostack/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
