<?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; 2008</title>
	<atom:link href="http://www.byvoid.com/blog/tag/2008/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>NOIP2008 传纸条 费用流建模</title>
		<link>http://www.byvoid.com/blog/noip2008-message-costflow/</link>
		<comments>http://www.byvoid.com/blog/noip2008-message-costflow/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 04:05:23 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[競賽題解]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[NOIP]]></category>
		<category><![CDATA[网络流]]></category>
		<category><![CDATA[费用流]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=1390</guid>
		<description><![CDATA[把问题抽象成图论问题，数学模型是求从S到T的两条不相交的路径，使得路径上点的权值之和最大。 费用流建模，首先拆点，把顶点i拆成i.a和i.b，i.a 与i.b之间连接一条费用为“好心值”，容量... ]]></description>
			<content:encoded><![CDATA[<p>把问题抽象成图论问题，数学模型是求从S到T的两条不相交的路径，使得路径上点的权值之和最大。</p>
<p>费用流建模，首先拆点，把顶点i拆成i.a和i.b，i.a 与i.b之间连接一条费用为“好心值”，容量为1的有向边，特殊地，左上角和右下角两个节点拆分后点内边容量设为2，因为我们要找两条不相交路径。i右边和下边的节点j，连接一条(i.b,j.a)费用为0，容量为1的有向边。</p>
<p>求最大费用最大流即可，费用流值就是要求的结果。比动态规划运行得快，空间占用少。<br />
<span id="more-1390"></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('p1390code2'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p13902"><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
</pre></td><td class="code" id="p1390code2"><pre class="cpp" style="font-family:monospace;"><span style="color: #ff0000; font-style: italic;">/* 
 * Problem: NOIP2008 message
 * Author: Guo Jiabao
 * Time: 2009.6.24 11:52
 * State: Solved
 * Memo: 最小费用最大流
*/</span>
<span style="color: #339900;">#include &lt;iostream&gt;</span>
<span style="color: #339900;">#include &lt;cstdio&gt;</span>
<span style="color: #339900;">#include &lt;cstdlib&gt;</span>
<span style="color: #339900;">#include &lt;cmath&gt;</span>
<span style="color: #339900;">#include &lt;cstring&gt;</span>
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
<span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> MAXL<span style="color: #000080;">=</span><span style="color: #0000dd;">51</span>,MAXN<span style="color: #000080;">=</span>MAXL<span style="color: #000040;">*</span>MAXL<span style="color: #000040;">*</span><span style="color: #0000dd;">2</span>,MAXM<span style="color: #000080;">=</span>MAXN<span style="color: #000040;">*</span><span style="color: #0000dd;">3</span>,INF<span style="color: #000080;">=</span>~0U<span style="color: #000080;">&gt;&gt;</span><span style="color: #0000dd;">1</span><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>MAXN<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>MAXN<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>
		<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>
		head<span style="color: #000080;">=</span>size <span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</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: #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>
		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: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>tail <span style="color: #000080;">&gt;=</span> MAXN<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>
		size <span style="color: #000040;">++</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> p<span style="color: #000080;">=</span>Q<span style="color: #008000;">&#91;</span>head<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>head <span style="color: #000080;">&gt;=</span> MAXN<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>p<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #0000ff;">false</span><span style="color: #008080;">;</span>
		size <span style="color: #000040;">--</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> p<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<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>MAXM<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>V<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,<span style="color: #000040;">*</span>fe<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,EC,S,T,CostFlow<span style="color: #008080;">;</span>
<span style="color: #0000ff;">int</span> dist<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span>,ft<span style="color: #008000;">&#91;</span>MAXN<span style="color: #008000;">&#93;</span><span style="color: #008080;">;</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> 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><span style="color: #0000dd;">1</span><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> init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">int</span> i,j,a,b,c<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">freopen</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;message.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;message.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: #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: #008000;">&#123;</span>
			a<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span>M<span style="color: #000040;">+</span>j<span style="color: #008080;">;</span>b<span style="color: #000080;">=</span>a<span style="color: #000040;">+</span>a<span style="color: #008080;">;</span>a<span style="color: #000080;">=</span>b<span style="color: #000040;">-</span><span style="color: #0000dd;">1</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>c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			addedge<span style="color: #008000;">&#40;</span>a,b,c<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>
	ES<span style="color: #008000;">&#91;</span>EC<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #000080;">=</span>ES<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span>.<span style="color: #007788;">c</span><span style="color: #000080;">=</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>M<span style="color: #008080;">;</span>j<span style="color: #000040;">++</span><span style="color: #008000;">&#41;</span>
		<span style="color: #008000;">&#123;</span>
			a<span style="color: #000080;">=</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span>M<span style="color: #000040;">+</span>j<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>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&lt;=</span>M<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				b <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">-</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span>M<span style="color: #000040;">+</span>j<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color: #0000dd;">2</span> <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
				addedge<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">+</span><span style="color: #0000dd;">1</span><span style="color: #000080;">&lt;=</span>N<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">&#123;</span>
				b <span style="color: #000080;">=</span> <span style="color: #008000;">&#40;</span>i<span style="color: #000040;">*</span>M<span style="color: #000040;">+</span>j<span style="color: #008000;">&#41;</span><span style="color: #000040;">*</span><span style="color: #0000dd;">2</span> <span style="color: #000040;">-</span> <span style="color: #0000dd;">1</span><span style="color: #008080;">;</span>
				addedge<span style="color: #008000;">&#40;</span>a,b,<span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			<span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
	<span style="color: #008000;">&#125;</span>	
	S<span style="color: #000080;">=</span><span style="color: #0000dd;">1</span><span style="color: #008080;">;</span> T <span style="color: #000080;">=</span> N <span style="color: #000040;">*</span> M <span style="color: #000040;">*</span> <span style="color: #0000dd;">2</span><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>
		dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF<span style="color: #008080;">;</span>
	dist<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> dist<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;">&gt;</span> dist<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>
				dist<span style="color: #008000;">&#91;</span>j<span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> dist<span style="color: #008000;">&#91;</span>i<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span> e<span style="color: #000040;">-</span><span style="color: #000080;">&gt;</span>v<span style="color: #008080;">;</span>
				ft<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> dist<span style="color: #008000;">&#91;</span>T<span style="color: #008000;">&#93;</span><span style="color: #000040;">!</span><span style="color: #000080;">=</span><span style="color: #000040;">-</span>INF<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> aug<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: #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>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>S<span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>ft<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>i<span style="color: #000040;">!</span><span style="color: #000080;">=</span>S<span style="color: #008080;">;</span>i<span style="color: #000080;">=</span>ft<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>
		CostFlow <span style="color: #000040;">+</span><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>v <span style="color: #000040;">*</span> delta<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
<span style="color: #0000ff;">void</span> solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">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>
		aug<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;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	init<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	solve<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;%d<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>,CostFlow<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-twostack/" title="NOIP2008 双栈排序 twostack 题解">NOIP2008 双栈排序 twostack 题解</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/my-highschool-2/" title="我的高中（二）爲NOIP奮鬭的日子">我的高中（二）爲NOIP奮鬭的日子</a></li><li><a href="http://www.byvoid.com/blog/noi-2009-pvz/" title="NOI 2009 植物大战僵尸">NOI 2009 植物大战僵尸</a></li><li><a href="http://www.byvoid.com/blog/lpf24-solution/" title="线性规划与网络流24题 解题报告">线性规划与网络流24题 解题报告</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/noip2008-message-costflow/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>新年之交-2009</title>
		<link>http://www.byvoid.com/blog/new-year-2009/</link>
		<comments>http://www.byvoid.com/blog/new-year-2009/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 16:00:21 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[生活點滴]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[OI]]></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=778</guid>
		<description><![CDATA[现在我正处在2008年和2009年的交界处，在这个时刻，回望2008，展望2009，是最合适不过的了。 想一想2008年，我的大事都是围绕OI展开的，一月 冬令营，二月 新年，三月 COGS，四月 省选，五月 API... ]]></description>
			<content:encoded><![CDATA[<p>现在我正处在2008年和2009年的交界处，在这个时刻，回望2008，展望2009，是最合适不过的了。</p>
<p>想一想2008年，我的大事都是围绕OI展开的，一月 冬令营，二月 新年，三月 COGS，四月 省选，五月 APIO和CTSC，六月 省选加试，七月 省队培训，八月 NOI，九月 参悟动态规划，十月 NOIP模拟，十一月 NOIP2008，十二月 POI。</p>
<p>也许在今后的日子中，没有一年会像今年一样，我在整个一年中把很大部分的精力投入到信息学竞赛中，不妨就称2008年为“OI年”吧。</p>
<p>2008年就匆匆地过去了，这一年来我变化了很多。我变得关心这个世界了，现在我十分关注从前很少的阅读新闻时评。我变得稳重了，很少再会因为一些小事而心情大起大落。我变得务实了，做事前我会充分地考虑实际情况。我变得大胆了，敢于为“天下先”，哪怕会遭到被人排斥。</p>
<p>2009年已经向我走来。2009年，将是我走向成熟的一年。到了2009年底，我就18岁了，我将成为一般意义上的一个成人。我要学会独立生存，学会为自己负责，学会承受压力。2009年，将会是我告别OI的一年，相信我一定会在NOI2009中以辉煌的成绩结束我的OI生涯。</p>
<p>2009，我已经准备好了。</p>
<h3  class="related_post_title">Maybe you like</h3><ul class="related_post"><li><a href="http://www.byvoid.com/blog/haoi2009-coming/" title="HAOI2009 即将到来">HAOI2009 即将到来</a></li><li><a href="http://www.byvoid.com/blog/next-step/" title="下一步">下一步</a></li><li><a href="http://www.byvoid.com/blog/reprint-oi-over/" title="[转载]OI生涯结束……在逸夫楼那些的日子里">[转载]OI生涯结束……在逸夫楼那些的日子里</a></li><li><a href="http://www.byvoid.com/blog/senior-high-school-grade2/" title="正式进入高二 明天开始上课">正式进入高二 明天开始上课</a></li><li><a href="http://www.byvoid.com/blog/noi2008-shaoxing/" title="NOI2008 绍兴之旅 经过 感想 及其他">NOI2008 绍兴之旅 经过 感想 及其他</a></li><li><a href="http://www.byvoid.com/blog/haoi2008-tmr/" title="明天就是省选">明天就是省选</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/new-year-2009/feed/</wfw:commentRss>
		<slash:comments>5</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('p640code4'); return false;">View Code</a> CPP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6404"><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="p640code4"><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>
		<item>
		<title>NOIP2008归来</title>
		<link>http://www.byvoid.com/blog/noip2008-return/</link>
		<comments>http://www.byvoid.com/blog/noip2008-return/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 09:05:38 +0000</pubDate>
		<dc:creator>BYVoid</dc:creator>
				<category><![CDATA[競賽歷程]]></category>
		<category><![CDATA[2008]]></category>
		<category><![CDATA[NOIP]]></category>
		<category><![CDATA[归来]]></category>

		<guid isPermaLink="false">http://www.byvoid.com/blog/?p=568</guid>
		<description><![CDATA[省评结果 AAAAAAAAAA AAAAAAAAAA AAAAAAAAAA WAAAWWWWWW 330 今年题居然比去年还简单（前三题）。第四题郁闷了。 Maybe you likeNOIP2008 传纸条 费用流建模NOIP2008 双栈排序 twostack 题解NOIP2008集训我的高中（二）... ]]></description>
			<content:encoded><![CDATA[<p>省评结果 AAAAAAAAAA	AAAAAAAAAA	AAAAAAAAAA	WAAAWWWWWW	330</p>
<p>今年题居然比去年还简单（前三题）。第四题郁闷了。</p>
<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/noip2008-twostack/" title="NOIP2008 双栈排序 twostack 题解">NOIP2008 双栈排序 twostack 题解</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/my-highschool-2/" title="我的高中（二）爲NOIP奮鬭的日子">我的高中（二）爲NOIP奮鬭的日子</a></li><li><a href="http://www.byvoid.com/blog/noip-cu/" title="我支持取消NOIP保送">我支持取消NOIP保送</a></li><li><a href="http://www.byvoid.com/blog/new-year-2009/" title="新年之交-2009">新年之交-2009</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.byvoid.com/blog/noip2008-return/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
