﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Mato is No.1-随笔分类-NOI</title><link>http://www.cppblog.com/MatoNo1/category/17125.html</link><description>Mato是一只超级大沙茶……但他一直以来都想成为各项比赛都No.1的神犇……</description><language>zh-cn</language><lastBuildDate>Fri, 02 May 2014 06:01:36 GMT</lastBuildDate><pubDate>Fri, 02 May 2014 06:01:36 GMT</pubDate><ttl>60</ttl><item><title>NOI2013 题解&amp;&amp;总结</title><link>http://www.cppblog.com/MatoNo1/archive/2013/07/20/201888.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sat, 20 Jul 2013 15:43:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2013/07/20/201888.html</guid><description><![CDATA[@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
@import url(http://www.cppblog.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&amp;file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
【Day0】<br />
不说了囧&#8230;&#8230;<br />
<br />
【Day1】<br />
meow：<br />
k=2：先将这N个d维向量组成一个N*d的矩阵A，则A*A<sup>T</sup>&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;(mod 2)就是向量i&#8226;向量j(mod 2)，因此问题有解当且仅当A*A<sup>T</sup>不是全1。<br />
随机1*N的向量v，看(v*A)*A<sup>T</sup>是否等于v*(N*N的全1矩阵)，如果A*A<sup>T</sup>不是全1那么期望试两次就可以得到不等的结果。（如果试了10次都是相等，就视为无解）<br />
如果两边的乘积不等，则找到那个不等的列，设为第i列，则必然存在一个解包含向量i，枚举另一个即可。时间复杂度O(Nd)<br />
k=3：计算(A*A<sup>T</sup>)&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;<sup>2</sup>(mod 3)，即(&#931;(x<sub>ik</sub>*x<sub>jk</sub>))<sup>2</sup>，即&#931;(x<sub>ik1</sub>*x<sub>ik2</sub>*x<sub>jk1</sub>*x<sub>jk2</sub>)(mod 3)，对每个向量构造一个d<sup>2</sup>维向量，为之前的每个向量各维两两相乘的结果，则转化为k=2的情况（只不过将mod 2改为mod 3），时间复杂度O(Nd<sup>2</sup>)，常数小一点（比如少算mod）可以卡过去。<br />
<br />
count：<br />
（正解需要某些很奇怪的性质，本沙茶看不出来，只会85分的）<br />
递推，设F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;和G&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;表示某层是BFS序列的&amp;e1;i..j&amp;e3;这一段，树的总高度和树的棵数（所求平均值即为F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3; / G&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;）。<br />
则枚举k，若k<strong><span style="&quot;color:"  red;&quot;="">满足一定条件</span></strong>，则F&amp;e1;j+1&amp;e3;&amp;e1;k&amp;e3;+=F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;+G&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;，G&amp;e1;j+1&amp;e3;&amp;e1;k&amp;e3;+=G&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;。<br />
问题是这个&#8220;一定条件&#8221;是什么（最难搞的地方囧）<br />
第零，BFS&amp;e1;j+1..k&amp;e3;这一段的各个结点在DFS序列中的位置递增（这个很显然）。<br />
第一，BFS&amp;e1;j+1..k&amp;e3;这一段的各个结点在DFS序列中的位置之前都必须有在BFS&amp;e1;i..j&amp;e3;范围内的结点，作为它的父结点（这个也很显然）；<br />
第二，DFS序列中，所有在BFS&amp;e1;i..j&amp;e3;范围内的结点的下一个位置如果不是在BFS&amp;e1;0..i-1&amp;e3;范围内的，就必须是BFS&amp;e1;j+1..k&amp;e3;范围内的，因为这表示它的第一个子结点（这个灰常难想到！！！！！！！！！！！！！！！本沙茶就挂在这里了囧&#8230;&#8230;）<br />
对于第零和第一，实际上是给出了k的上限，枚举k时不符合这个条件则退出，而第二则是给出了k的下限（所有的&#8220;下一个位置&#8221;要填满才能算）；<br />
此外，F和G要用long double（double也会爆，不用担心精度，本沙茶当时还在如何维护平均值的问题上纠结了很久&#8230;&#8230;）<br />
这个做法是O(N<sup>3</sup>)的，但加上那些优化就可以85分了囧&#8230;&#8230;<br />
（本沙茶当时想到这个做法了，也想到了第零和第一，但木有想到第二，结果挂了&#8230;&#8230;要是真得到85分，总分254，稳的rank1了&#8230;&#8230;真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧，真悲剧&#8230;&#8230;）<br />
<br />
train：<br />
史上最水的提交答案&#8230;&#8230;整个就是个NOIP普及组难度的题&#8230;&#8230;<br />
首先分析数据就不难发现这10个点其实是一种模型：<br />
一开始有若干元钱（用变量v 2表示）。<br />
有若干个大块，每个大块可以选择进或者不进，如果进，就要付出一些钱，如果不进，就自动跳转到后面的某个大块。<br />
在每个大块里有若干个（不超过25个）小块，有1或10个变量，每个小块也可以选择要或者不要，如果要，就对所有的变量各加上一个效果值（可正可负）。<br />
目标是所有变量的绝对值之和最大（每个大块末尾会结算一次，然后将所有变量的值清零）<br />
首先每个大块内选哪些小块可以暴力枚举，然后得到最大的总绝对值，设为val&amp;e1;i&amp;e3;（i为大块编号），设如果不进第i个大块，跳到的大块编号为B&amp;e1;i&amp;e3;，第i个大块付出的钱为V&amp;e1;i&amp;e3;。<br />
而大块之间就是一个类似于01背包的模型，设F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;表示到达第i个大块（尚未作出选择）时，用掉了j元钱的最大总效果值，用F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;更新F&amp;e1;B&amp;e1;i&amp;e3;&amp;e3;&amp;e1;j&amp;e3;，若不超过一开始的总钱数则用F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;+val&amp;e1;i&amp;e3;更新F&amp;e1;i+1&amp;e3;&amp;e1;j+V&amp;e1;i&amp;e3;&amp;e3;，要实时保存最优决策。<br />
输出的时候注意一下，那里面有几个点，当钱不够时会自动选择不进当前大块，木有必要作出选择了。<br />
<br />
至此Day1完挂。<br />
<br />
【Day2】<br />
matrix：<br />
矩阵乘法，十进制快速幂。没了。<br />
<br />
penman：<br />
比较猥琐的DP题&#8230;&#8230;<br />
重点是这个：所有的图形都可以拆成单列，一列一列地弄（本沙茶太弱了，这个都木有想起来），然后就是三维DP。<br />
N：设F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;&amp;e1;k&amp;e3;&amp;e1;st&amp;e3;表示第i列，上下边界分别为j、k行，状态为第st个部分（第0部分为最左边一竖，第1部分为中间若干块，第2部分为最右边一竖）的最优解，计算好一列之后求出一大堆辅助值，就可以使下一列O(1)算出了。<br />
I：设F&amp;e1;i&amp;e3;&amp;e1;j&amp;e3;&amp;e1;k&amp;e3;&amp;e1;st&amp;e3;表示第i列，上下边界分别为j、k行，状态为第st个部分（第0部分为那一竖的左边，第1部分为那一竖，第2部分为那一竖的右边）的最优解，不需要辅助值，直接求即可；<br />
O：可以DP，但更好的办法是枚举左、右、上边界，然后扫描，说它更好是因为知道了左右边界，可以直接引出左边的N和右边的I的最优解。<br />
具体实现的时候细节很多&#8230;&#8230;真折磨人。还有要注意为节省空间，F数组要对i这一维滚动。<br />
<br />
foodshop：<br />
首先这是个无向环套树（关于这方面的总结见<a title="&quot;这里&quot;" href="&quot;http://www.cppblog.com/MatoNo1/archive/2012/09/01/189006.html&quot;">这里</a>）<br />
枚举开店的那条边，如果是树边，求出该边的较下结点往下的最大长度dist1，以及往其它结点的最远距离dist2，则结果即为min{dist1+x, dist2+L-x}，满足0&lt;=x&lt;=L，L为该边长度。dist1求法不说了，dist2分为两部分，树内的，可以转化为经典DP模型&#8220;树的中心点&#8221;；树外的，先求出环上的每个结点往树中走的最大长度，作为这个结点的权值，然后就转化为一个带边权和点权的环，对于每个点i，求出max{i、j距离+j的权值}（j为环上的点）的值，这个值可以通过在环上扫描的方法求出：设G&amp;e1;i&amp;e3;为第i个点出发，逆时针走更优的位置最远到哪里。逆时针扫描这个环，然后所有的G就可以在线性时间内求出，求出G后，对每个点分别求出其逆时针更优区与顺时针更优区内的最大值（可以在扫描过程中用线段树维护），即可解决这个问题。<br />
如果开店的边在环上，设其两端点为i、j（i-&gt;j为逆时针方向）。很容易发现，如果在这条边上开店，则j的逆时针更优区内的所有点一定是逆时针到这个店更近，i的顺时针更优区内的所有点一定是顺时针到这个店更近，而其它的点则需要额外判断一下是顺时针更近还是逆时针更近（总判断次数为线性）。这样也可以借助线段树在扫描过程中求出每条环边的顺、逆时针更优区，从而转化为与树边的问题一样的模型。时间复杂度O(NlogN)。<br />
不过，对于环边，还有一种更简单的做法（Orz @hza）：<br />
二分最远距离（即结果）D，然后对于环上的所有点，找到这个环上到这个点距离大于（D-这个点树里的最大深度）的点集合（显然是连续的一段弧），对所有点的这种弧求并，如果能覆盖整个环，则最优解&lt;D，否则最优解&gt;=D。<br />
<br />
本沙茶Day2全暴力，只拿了暴力分&#8230;&#8230;对付繁琐题的能力太弱了，代码量一大就悲剧&#8230;&#8230;<br />
（后来发现，foodshop的暴力都写疵了囧&#8230;&#8230;枚举开店的边后应该用SPFA求最短路，因为删掉的可能是树边，剩下的不是树&#8230;&#8230;不过数据弱，木有出现这种情况囧&#8230;&#8230;）<br />
<br />
至此NOI2013完挂。<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
【总结 &amp;&amp; 一些感想】<br />
从上面可以看出，本沙茶在NOI2013中使用的算法都是NOIP普及组以内难度的囧（matrix的矩阵乘法可能略高级一些，但显然也不能超过NOIP难度）&#8230;&#8230;<br />
这些算法都是本沙茶在2009年以前就搞懂的，也就是说，后4年掌握的所有算法，这次都木有用上&#8230;&#8230;<br />
最后一次NOI，竟如此富有戏剧性&#8230;&#8230;居然只考普及组算法&#8230;&#8230;<br />
图论、高级数据结构、字符串、几何、数论、组合&#8230;&#8230;这次都木有考，这也是NOI历史上的一个&#8220;创举&#8221;了囧&#8230;&#8230;<br />
但尽管如此，本沙茶在此次NOI中仍然暴露出了诸多问题&#8230;&#8230;并不是比赛技巧问题，而是平时埋下的祸根&#8230;&#8230;<br />
想题不够灵活，找不出题目隐藏的特殊性质，特殊情况考虑不清楚，写代码速度太慢&#8230;&#8230;这些都是平时不好好做题，天天颓废的结果&#8230;&#8230;<br />
因此，这次挂掉，也是理所应当的事&#8230;&#8230;<br />
<div><strong><span style="&quot;color:"  red;&quot;="">遗失了过去，因此，现在后悔了&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;</span></strong><br />
<br />
不过，不管肿么讲，还是混进了集训队&#8230;&#8230;集训队是一个新的开始，每天都面临巨大的挑战，同时每天都能得到巨大的提高&#8230;&#8230;<br />
虽然本沙茶现在很弱，应付难题的能力还远远不够，但经过这一年的训练，相信可以改变这一切，尽快脱菜&#8230;&#8230;<br />
希望这能是一个转折点。<br />
<strong><span style="&quot;color:"  red;&quot;="">50，12，6，4，1。</span></strong><br />
<div>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</div>
膜拜本次虐场神犇<br />
@鼎爷<br />
@xudyh<br />
@xyz111<br />
@hzaskywalker(FFT)<br />
@hzhwcmhf<br />
@zhj<br />
@鱼丸<br />
@sunzhouyi<br />
以及众多虐掉count、penman、foodshop的神犇&#8230;&#8230;</div>
<div></div><img src ="http://www.cppblog.com/MatoNo1/aggbug/201888.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2013-07-20 23:43 <a href="http://www.cppblog.com/MatoNo1/archive/2013/07/20/201888.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【AHOI2013复仇】NOI2008 道路设计</title><link>http://www.cppblog.com/MatoNo1/archive/2012/09/22/191595.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sat, 22 Sep 2012 08:21:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2012/09/22/191595.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/191595.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2012/09/22/191595.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/191595.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/191595.html</trackback:ping><description><![CDATA[<a title="原题地址" href="http://www.lydsy.com/JudgeOnline/problem.php?id=1063">原题地址</a><br />典型的二次递推/DP的题目。<br />首先，题目中的&#8220;不便利值&#8221;指的是某个点到根的路径上的木有被选定链覆盖的边的条数。<br /><br />第一问：设F[i][0..2]分别为当子树i中结点i的状态为不参与链（0）、作为某链端点（1）、作为某链中间点（2）时，子树i中的结点到i的最小不便利值。为了得到F，需要设立G[j][k(0..2)]表示结点i的前j棵子树中，有k棵的根结点与结点i接上的最小的最大不便利值。显然，不和i接上的，状态为0、1、2都行，但不便利值要加1，而和i接上的状态只能是0或1，不加1。<br /><br />问题是第二问。第二问的难点在于，<span style="color: red"><strong>当i取得最小不便利值时，i的每个子结点并非都取到最小不便利值</strong></span>。举个例子，结点i的最小不便利值为3，它的某个子结点j的最小不便利值为2，则当j与i接上时，子树j的内部既可以取不便利值为2的解，也可以取不便利值为3的解。所以，为了解决第二问，需要求出结点i的最小不便利值为x的解的总数。<strong><span style="color: red">万幸的是，x的范围并不是太大，可以证明，x不会超过log</span><sub style="color: red">3</sub><span style="color: red">N（下取整），也就是当N=100000时x最大为10。</span></strong>因此，最后仍然不会T掉。<br /><br />这题的一个启示就是，在求类似于&#8220;最优解计数&#8221;的问题中，<span style="color: red"><strong>不要认为当后面的状态取得最优解时，前面的状态一定取得最优解。</strong></span>因此，不能只记录某状态取得最优解的个数，而要记录该状态取得每一个可行解时的个数。<br /><br />代码：
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdlib.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #0000ff">string</span><span style="color: #000000">.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i&lt;n;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re1(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=1;&nbsp;i&lt;=n;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re2(i,&nbsp;l,&nbsp;r)&nbsp;for&nbsp;(int&nbsp;i=l;&nbsp;i&lt;r;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re3(i,&nbsp;l,&nbsp;r)&nbsp;for&nbsp;(int&nbsp;i=l;&nbsp;i&lt;=r;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;rre(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=n-1;&nbsp;i&gt;=0;&nbsp;i--)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;rre1(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=n;&nbsp;i&gt;0;&nbsp;i--)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;rre2(i,&nbsp;r,&nbsp;l)&nbsp;for&nbsp;(int&nbsp;i=r-1;&nbsp;i&gt;=l;&nbsp;i--)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;rre3(i,&nbsp;r,&nbsp;l)&nbsp;for&nbsp;(int&nbsp;i=r;&nbsp;i&gt;=l;&nbsp;i--)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;ll&nbsp;long&nbsp;long</span><span style="color: #000000"><br /></span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;MAXN&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100010</span><span style="color: #000000">,&nbsp;MAXW&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">,&nbsp;INF&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">0U</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;edge&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;b,&nbsp;pre,&nbsp;next;<br />}&nbsp;E0[MAXN&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">],&nbsp;E[MAXN&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,&nbsp;m0,&nbsp;m,&nbsp;Q[MAXN],&nbsp;F[MAXN][</span><span style="color: #000000">3</span><span style="color: #000000">],&nbsp;G[MAXN][</span><span style="color: #000000">3</span><span style="color: #000000">],&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />ll&nbsp;MOD,&nbsp;FS[MAXN][MAXW][</span><span style="color: #000000">3</span><span style="color: #000000">],&nbsp;S[MAXN][MAXW][</span><span style="color: #000000">3</span><span style="color: #000000">],&nbsp;res2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;vst[MAXN];<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init_d()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;E0[i].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[i].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[i].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[i].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;&nbsp;m0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;add_edge0(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;E0[m0].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E0[m0].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E0[m0].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[a].pre;&nbsp;E0[m0].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E0[a].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0;&nbsp;E0[E0[m0].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;E0[m0].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E0[m0].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E0[m0].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[b].pre;&nbsp;E0[m0].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E0[b].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0;&nbsp;E0[E0[m0].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0</span><span style="color: #000000">++</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;add_edge(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;E[m].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E[m].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E[m].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[a].pre;&nbsp;E[m].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E[a].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m;&nbsp;E[E[m].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m</span><span style="color: #000000">++</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_M;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">n,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">_M);&nbsp;cin&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;MOD;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(_M&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;res2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;}&nbsp;init_d();&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a0,&nbsp;b0;<br />&nbsp;&nbsp;&nbsp;&nbsp;re2(i,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;n)&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a0,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">b0);&nbsp;add_edge0(</span><span style="color: #000000">--</span><span style="color: #000000">a0,&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">b0);}<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;prepare()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;vst[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;Q[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;vst[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;y;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;front</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;rear</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;front</span><span style="color: #000000">&lt;=</span><span style="color: #000000">rear;&nbsp;front</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Q[front];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E0[x].next;&nbsp;p&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;x;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E0[p].next)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[p].b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">vst[y])&nbsp;{vst[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;Q[</span><span style="color: #000000">++</span><span style="color: #000000">rear]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;y;&nbsp;add_edge(x,&nbsp;y);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">vst[i])&nbsp;{res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;res2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;}<br />}<br />inline&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;minv3(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s1,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s2,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s3)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s1&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;s2&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;s1&nbsp;:&nbsp;s2;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s0&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;s3&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;s0&nbsp;:&nbsp;s3;<br />}<br />inline&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;minv2(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s1,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;s2)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;s1&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;s2&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;s1&nbsp;:&nbsp;s2;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;solve()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;y,&nbsp;len,&nbsp;v1,&nbsp;v2,&nbsp;v01,&nbsp;v02;&nbsp;ll&nbsp;sum;<br />&nbsp;&nbsp;&nbsp;&nbsp;rre(i,&nbsp;n)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Q[i];&nbsp;len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;G[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;G[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;G[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;INF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[x].next;&nbsp;p&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;x;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[p].next)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[p].b;&nbsp;len</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;minv3(F[y][</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;F[y][</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;F[y][</span><span style="color: #000000">2</span><span style="color: #000000">])&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;v2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;minv2(F[y][</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;F[y][</span><span style="color: #000000">1</span><span style="color: #000000">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G[len][</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v1&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;v1&nbsp;:&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v01&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v1&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;v1&nbsp;:&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v02&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v2&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;v2&nbsp;:&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G[len][</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;minv2(v01,&nbsp;v02);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v01&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v1&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;v1&nbsp;:&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">2</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v02&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v2&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;v2&nbsp;:&nbsp;G[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;G[len][</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;minv2(v01,&nbsp;v02);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re(j,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;F[x][j]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;G[len][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re(j,&nbsp;MAXW)&nbsp;{S[</span><span style="color: #000000">0</span><span style="color: #000000">][j][</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;S[</span><span style="color: #000000">0</span><span style="color: #000000">][j][</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;S[</span><span style="color: #000000">0</span><span style="color: #000000">][j][</span><span style="color: #000000">2</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;}&nbsp;len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[x].next;&nbsp;p&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;x;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[p].next)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[p].b;&nbsp;len</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re(j,&nbsp;MAXW)&nbsp;re(k,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S[len][j][k]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(j)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;re(k0,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;{sum&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;FS[y][j&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][k0];&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sum&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;MOD)&nbsp;sum&nbsp;</span><span style="color: #000000">-=</span><span style="color: #000000">&nbsp;MOD;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S[len][j][k]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(sum&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;S[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][j][k])&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;MOD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(k)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;re(k0,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;{sum&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;FS[y][j][k0];&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sum&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;MOD)&nbsp;sum&nbsp;</span><span style="color: #000000">-=</span><span style="color: #000000">&nbsp;MOD;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S[len][j][k]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(S[len][j][k]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;sum&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;S[len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">][j][k&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">])&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;MOD;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;re(j,&nbsp;MAXW)&nbsp;re(k,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;FS[x][j][k]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;S[len][j][k];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;minv3(F[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;F[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;F[</span><span style="color: #000000">0</span><span style="color: #000000">][</span><span style="color: #000000">2</span><span style="color: #000000">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;res2&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;re(i,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(F[</span><span style="color: #000000">0</span><span style="color: #000000">][i]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;res1)&nbsp;res2&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;FS[</span><span style="color: #000000">0</span><span style="color: #000000">][F[</span><span style="color: #000000">0</span><span style="color: #000000">][i]][i];&nbsp;res2&nbsp;</span><span style="color: #000000">%=</span><span style="color: #000000">&nbsp;MOD;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;pri()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;res1&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;res2&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">res1)&nbsp;prepare();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">res1)&nbsp;solve();<br />&nbsp;&nbsp;&nbsp;&nbsp;pri();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /><br /></span></div><br /> <img src ="http://www.cppblog.com/MatoNo1/aggbug/191595.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-09-22 16:21 <a href="http://www.cppblog.com/MatoNo1/archive/2012/09/22/191595.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【AHOI2013复仇】NOI2012 park 一种巨另类的做法</title><link>http://www.cppblog.com/MatoNo1/archive/2012/09/08/189952.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sat, 08 Sep 2012 11:27:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2012/09/08/189952.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/189952.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2012/09/08/189952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/189952.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/189952.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原题地址这个算法是由本沙茶在现场使用的那个做法扩展得来的&#8230;&#8230;其实AC不了，后两个点会因为常数过大而T掉&#8230;&#8230;但在BZOJ上算总时间的话能AC&#8230;&#8230;首先考虑树的情形。设F[i]为从点i开始，往子树i里面走，到达叶结点的期望长度，则很容易得到递推公式：F[i] = (&#931;F[j] + W(i, j)) / K，其中j是i的子结...&nbsp;&nbsp;<a href='http://www.cppblog.com/MatoNo1/archive/2012/09/08/189952.html'>阅读全文</a><img src ="http://www.cppblog.com/MatoNo1/aggbug/189952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-09-08 19:27 <a href="http://www.cppblog.com/MatoNo1/archive/2012/09/08/189952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2011团体对抗赛专帖</title><link>http://www.cppblog.com/MatoNo1/archive/2011/07/28/152006.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Thu, 28 Jul 2011 14:08:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2011/07/28/152006.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/152006.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2011/07/28/152006.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/152006.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/152006.html</trackback:ping><description><![CDATA[<div>此帖用于记录NOI2011团体对抗赛的各版本（代码）更新情况。<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年7月28日】<br />目前代码框架（Program0.cpp）已经完成。<br />NOI2011团体对抗赛安徽队的代码名称初步定为：Docx<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年7月29日】<br />Docx I已经完成，代码长度（包括注释）为5368Bytes<br />版本说明：<br />（1）对优势分数G的计算为G2.1版本；<br />（2）启发函数还比较弱；<br />目前由于测评机问题，暂时无法测试，只有看晚上的练习赛了。<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年7月30日】<br />今天秃然发现了Docx I的一个严重错误：在判定是否有炸弹的时候把true和false弄反了，结果导致炸弹根本无法使用。<br />现在改掉了之后（仍然命名为Docx I），TEST结果仍然不是很理想，只能虐别人的一些初等版本，高等版本（比如那个"I Hate Zerg"的版本2）根本木有办法。<br />目前正在改进启发函数，争取在明天下午之前出Docx II。<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年8月1日】<br />真惊险！最后时刻终于找到了问题所在，并且把Docx II经最后一步改进得到的版本命名为Docx III，提交到排位赛。<br />最后结果&#8230;&#8230;还行，第3名&#8230;&#8230;只是严重怀疑有强省故意放水&#8230;&#8230;<br />大概明天正式分组就能出来了&#8230;&#8230;<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年8月2日】<br />分组结果已经出来，安徽队的形势还是比较有利的&#8230;&#8230;<br /><br />好了，在8月10日下午以前都不用再管团体对抗赛了&#8230;&#8230;全力冲刺个人竞赛&#8230;&#8230;<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年8月10日】<br />团体对抗赛最后冲刺。<br />今天把几个地方的系数改了一下，一些看起来很傻的决策也得到了修正。不过晚上练习赛的结果仍然很不理想&#8230;&#8230;<br />算了，明天1/4决赛等着被血洗吧囧&#8230;&#8230;<br /><br />现在还有一点时间，乱搞一下吧囧&#8230;&#8230;<br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />【2011年8月11日】<br />最终结果：八强，1/4决赛中被湖南血洗<br /><br />显然是一个预想之中的结果&#8230;&#8230;还是应验了那句话：团体对抗赛碰到湖南就是找死&#8230;&#8230;<br />这次，本沙茶真的已经尽力了&#8230;&#8230;<br />明年再来吧&#8230;&#8230;<br /></div> <img src ="http://www.cppblog.com/MatoNo1/aggbug/152006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-07-28 22:08 <a href="http://www.cppblog.com/MatoNo1/archive/2011/07/28/152006.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2005 智慧珠游戏</title><link>http://www.cppblog.com/MatoNo1/archive/2011/07/20/151509.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Wed, 20 Jul 2011 15:07:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2011/07/20/151509.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/151509.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2011/07/20/151509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/151509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/151509.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 【原题见这里】很明显的精确覆盖的模型，12个零件，再加上它们经过旋转、翻转后的不同形状，共60种，每种又可以放在不同的位置（只看最左上的那个珠子）一种零件的一种位置就是一行。列（限制）有两种：每个格子只能放一个（55列），以及每个零件（注意是每个零件，不是每种零件）只能用一次（12列），共67列。预先放的那些零件可以看成预先选中的行。然后DLX精确覆盖即可。下面是DLX精确覆盖的几个易疵点：（1）...&nbsp;&nbsp;<a href='http://www.cppblog.com/MatoNo1/archive/2011/07/20/151509.html'>阅读全文</a><img src ="http://www.cppblog.com/MatoNo1/aggbug/151509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-07-20 23:07 <a href="http://www.cppblog.com/MatoNo1/archive/2011/07/20/151509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2008 party</title><link>http://www.cppblog.com/MatoNo1/archive/2011/07/14/150967.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Thu, 14 Jul 2011 04:23:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2011/07/14/150967.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/150967.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2011/07/14/150967.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/150967.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/150967.html</trackback:ping><description><![CDATA[原题见<a title="这里" href="http://www.rqnoj.cn/Problem_336.html">这里</a>（BZOJ和BSOJ都挂了，真杯具，只能借助RQ了囧&#8230;&#8230;）<br /><br />难度不是很大，就是特殊情况比较多，比较猥琐（不过本题数据弱，就算不考虑所有的特殊情况也能过7个点）。<br />首先O(NM)的朴素算法很好想到：枚举K，然后给每个结点编号即可。在编号时，先随便指定一个未编号的点，设它的编号为0，然后遍历所有和它相关联的边（这里可以把原图想象成一个无向图），将这些边的另一个端点编上号即可，中间若某个点的编号出现矛盾，则这个K不合法，否则这个K合法。<br />然后进行优化：合法的K实际上是有限制的，它必然是某个数的因数，具体来说，对这个图进行DFS，并考察其中所有的跨越边和逆向边，对于跨越边&lt;i, j&gt;，设遍历树中i、j间距离为D，则合法的K必然是(D-1)的因数（因为i和遍历树中j的父结点都有指向j的边，它们的编号应相同，而它们之间的距离为(D-1)）；对于逆向边&lt;i, j&gt;，设遍历树中i、j间距离为D'，则合法的K必然是(D'+1)的因数（因为这里形成了一个环，环的长度为(D'+1)）。这样一来就明显缩小了K的取值范围，再进行枚举，就可以显著缩短时间。<br /><br />下面是一些极其猥琐的特殊情况：<br />（1）根据题意，必须是K类每类都有，因此在尝试编号成功（没有发生任何矛盾）后，还要看一下<span style="color: red"><strong>实际出现的编号数目</strong></span>是否等于K，若小于K，同样不合法；<br />（2）该图的基图可能不连通，此时对于其基图的每个连通块，其编号互不影响，所以要对每个连通块分别统计实际出现的编号数目，设它们的和为SUM，则不大于SUM的K值均合法（只要中间不出现矛盾），因此可以直接得到最大值为SUM，提前结束；不过，这种特判只有在总共实际出现的编号数目小于K的情况下才能进行；<br />（3）由于考察的是实际出现的编号数目，因此最后求出的最大值、最小值可能小于3，这时应作出如下处理：若最大值小于3，则无解；若最小值小于3，则将最小值改为3。<br /><br />本题比较猥琐的数据是第4、5、6个点，分别出现了上述的第（1）、（2）、（3）种特殊情况，此外，这三个点建出的图中竟然没有一条跨越边或逆向边！<br /><br />代码： 
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i&lt;n;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re2(i,&nbsp;l,&nbsp;r)&nbsp;for&nbsp;(int&nbsp;i=l;&nbsp;i&lt;r;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re3(i,&nbsp;l,&nbsp;r)&nbsp;for&nbsp;(int&nbsp;i=l;&nbsp;i&lt;=r;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;MAXN&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">100000</span><span style="color: #000000">,&nbsp;MAXM&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1100001</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;edge&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;b,&nbsp;s,&nbsp;pre,&nbsp;next;<br />}&nbsp;E0[MAXM],&nbsp;E[MAXM&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;MAXM];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,&nbsp;m0,&nbsp;m,&nbsp;P,&nbsp;len,&nbsp;X[MAXN],&nbsp;No[MAXN],&nbsp;stk[MAXN],&nbsp;st[MAXN],&nbsp;dep[MAXN],&nbsp;V[MAXN],&nbsp;fo[MAXN],&nbsp;Q[MAXN],&nbsp;res0,&nbsp;res1;<br /></span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;vst[MAXN],&nbsp;T0[MAXN];<br /></span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">long</span><span style="color: #000000">&nbsp;T[MAXN],&nbsp;_Z&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init_d()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;E[i].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[i].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[i].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[i].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[i].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[i].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;m0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(n&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">)&nbsp;m&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;m&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;n;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;add_edge(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;E0[m0].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E0[m0].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E0[m0].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[a].pre;&nbsp;E0[m0].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E0[a].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0;&nbsp;E0[E0[m0].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m0</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;E[m].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E[m].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E[m].s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;E[m].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[a].pre;&nbsp;E[m].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E[a].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m;&nbsp;E[E[m].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;E[m].a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E[m].b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a;&nbsp;E[m].s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;E[m].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[b].pre;&nbsp;E[m].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;E[b].pre&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m;&nbsp;E[E[m].pre].next&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;m</span><span style="color: #000000">++</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000">"</span><span style="color: #000000">party.in</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">r</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_m,&nbsp;a,&nbsp;b;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">n,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">_m);&nbsp;init_d();<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;_m)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add_edge(</span><span style="color: #000000">--</span><span style="color: #000000">a,&nbsp;</span><span style="color: #000000">--</span><span style="color: #000000">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;fclose(stdin);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;gcd(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(b)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;r&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;a&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;b;&nbsp;a&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;b;&nbsp;b&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;r;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;a;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;prepare()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;tp,&nbsp;x,&nbsp;y,&nbsp;ord&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;fd;<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;V[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;P&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">V[i])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stk[tp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;&nbsp;fo[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ord</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;V[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;st[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[i].next;&nbsp;dep[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(tp&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;stk[tp];&nbsp;fd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">st[x];&nbsp;p&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;x;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E0[p].next)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[p].b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">V[y])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stk[</span><span style="color: #000000">++</span><span style="color: #000000">tp]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;y;&nbsp;fo[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ord</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;V[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;st[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[y].next;&nbsp;dep[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;dep[x]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;st[x]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E0[p].next;&nbsp;fd&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(V[y]&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;P&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gcd(P,&nbsp;dep[x]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;dep[y]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(fo[y]&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;fo[x])&nbsp;P&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;gcd(P,&nbsp;dep[y]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;dep[x]&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">fd)&nbsp;{V[x]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;&nbsp;tp</span><span style="color: #000000">--</span><span style="color: #000000">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;re3(i,&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">,&nbsp;n)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">(P&nbsp;</span><span style="color: #000000">%</span><span style="color: #000000">&nbsp;i))&nbsp;X[len</span><span style="color: #000000">++</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;test(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;K)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;{vst[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;No[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;K)&nbsp;T0[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;y,&nbsp;No0,&nbsp;sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;sum0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;n)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">vst[i])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;Q[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;&nbsp;vst[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;_Z</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(T[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;_Z)&nbsp;{T[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_Z;&nbsp;sum</span><span style="color: #000000">++</span><span style="color: #000000">;}&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">T0[</span><span style="color: #000000">0</span><span style="color: #000000">])&nbsp;{T0[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;sum0</span><span style="color: #000000">++</span><span style="color: #000000">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;front</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;rear</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;front</span><span style="color: #000000">&lt;=</span><span style="color: #000000">rear;&nbsp;front</span><span style="color: #000000">++</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Q[front];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[x].next;&nbsp;p&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;x;&nbsp;p</span><span style="color: #000000">=</span><span style="color: #000000">E[p].next)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;E[p].b;&nbsp;No0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;No[x]&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;E[p].s;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(No0&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;K)&nbsp;No0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(No0&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;No0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;K&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(No[y]&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;No0&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;No[y])&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;No[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;No0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(T[No0]&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;_Z)&nbsp;{T[No0]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_Z;&nbsp;sum</span><span style="color: #000000">++</span><span style="color: #000000">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">T0[No0])&nbsp;{T0[No0]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;sum0</span><span style="color: #000000">++</span><span style="color: #000000">;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">vst[y])&nbsp;{vst[y]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;Q[</span><span style="color: #000000">++</span><span style="color: #000000">rear]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;y;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(sum0&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;K)&nbsp;res0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;sum;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;sum0;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;solve()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;K,&nbsp;K0;&nbsp;res0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;len)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;K&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;X[i];&nbsp;K0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;test(K);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(K0&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(res1&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;K0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(K0&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;K)&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;res0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;K;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(res0&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;res0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(res1&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">)&nbsp;res1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;pri()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000">"</span><span style="color: #000000">party.out</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">w</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;stdout);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d&nbsp;%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;res0,&nbsp;res1);<br />&nbsp;&nbsp;&nbsp;&nbsp;fclose(stdout);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;init();<br />&nbsp;&nbsp;&nbsp;&nbsp;prepare();<br />&nbsp;&nbsp;&nbsp;&nbsp;solve();<br />&nbsp;&nbsp;&nbsp;&nbsp;pri();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /></span></div><br /><img src ="http://www.cppblog.com/MatoNo1/aggbug/150967.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-07-14 12:23 <a href="http://www.cppblog.com/MatoNo1/archive/2011/07/14/150967.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【NOI2005 维护数列(sequence)】Splay Tree处理序列问题</title><link>http://www.cppblog.com/MatoNo1/archive/2011/06/21/149121.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Tue, 21 Jun 2011 08:06:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2011/06/21/149121.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/149121.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2011/06/21/149121.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/149121.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/149121.html</trackback:ping><description><![CDATA[<div>【原题见<a title="这里" href="http://mail.bashu.cn:8080/BSoiOnline/showproblem?problem_id=2246">这里</a>】<br />本题是Splay Tree处理序列问题（也就是当线段树用）的一个典型例题。<br /><br />Splay Tree之所以可以当线段树用，是因为它可以支持一个序列，然后用&#8220;左端前趋伸展到根，右端后继伸展到根的右子结点，取根的右子结点的左子结点&#8221;这种伸展方法，对一个序列中的一整段进行整体操作。由于要防止出现前趋或后继不存在的情况，需要在这个序列的两端加入两个边界结点，要求其值不能影响到结点各种记载信息的维护（多取0、&#8734;或-&#8734;）。这两个边界结点在树中永远存在，不会被删除。<br /><br />（1）结点的引用：<br />在当线段树用的Splay Tree中，真正的关键字是下标而不是值，因此，&#8220;序列中第i个结点&#8221;实际上对应的是&#8220;树中第(i+1)小的结点&#8221;（因为左边还有一个边界结点），这就说明在对结点引用时需要找第K小的操作。因此，下面的&#8220;结点x&#8221;指的是&#8220;树中第(x+1)小的结点&#8221;。<br />（2）标记：<br />在线段树中，如果对一个结点所表示的线段整体进行了某种操作，需要在这个结点上打上一个标记，在下一次再找到这个结点时，其标记就会下放到其两个子结点上。在Splay Tree中也可以引入标记。比如要对[2, 6]这一段进行整体操作，就将结点1伸展到根的位置，将结点7伸展到根的右子树的位置，然后结点7的左子树就表示[2, 6]这一段，对这棵子树的根结点打上标记并立即生效（必须是立即生效，而不是等下一次引用再生效），也就是立即改变该结点记录的一些信息的值。如果下次再次引用到这个结点，就要将其标记下放到其两个子结点处；<br />需要注意的一点是，如果要伸展某个结点x到r的子结点的位置，就必须保证从x原来的位置到r的这个子结点（x伸展后的位置）上的所有结点上均没有标记，否则就会导致标记混乱。因此，必须首先找到这个结点x，在此过程中不断下放标记。<br />（3）自底向上维护的信息：<br />标记可以看成一种自顶向下维护的信息。除了标记以外，作为&#8220;线段树&#8221;，往往还要维护一些自底向上维护的信息。比如在sequence这题中，就有lmax（左段连续最大和）、rmax（右段连续最大和）、midmax（全段连续最大和）以及sum（全段总和）等信息要维护。对于这类东东其实也很好办，因为子树大小（sz域）就是一种自底向上维护的信息，因此对于这些信息只要按照维护sz域的办法维护即可（统一写在upd函数里）。唯一的不同点是打标记时它们的值可能要改变。<br />（4）对连续插入的结点建树：<br />本题的插入不是一个一个插入，而是一下子插入一整段，因此需要先将它们建成一棵树。一般建树操作都是递归的，这里也一样。设目前要对A[l..r]建树（A为待插入序列），若l&gt;r则退出，否则找到位于中间的元素mid = l + r &gt;&gt; 1，将A[mid]作根，再对A[l..mid-1]建左子树，对A[mid+1..r]建右子树即可。这样可以保证一开始建的就是一棵平衡树，减小常数因子。<br />（5）回收空间：<br />根据本题的数据范围提示，插入的结点总数最多可能达到4000000，但在任何时刻树中最多只有500002个结点（包括两个边界），此时为了节省空间，可以采用循环队列回收空间的方法。即：一开始将所有的可用空间（可用下标，本题为1~500002）存在循环队列Q里，同时设立头尾指针front和rear，每次如果有新结点插入，就取出Q[front]并作为新结点的下标，如果有结点要删除（本题是一次删除整棵子树，因此在删除后需要分别回收它们的空间），则从rear开始，将每个删除的结点的下标放回到Q里。当然，这种方法是要牺牲一定的时间的，因此在空间不是特别吃紧的情况下不要用。<br /><br />【2012年1月16日更新】<br />今天重写sequence的时候，秃然发现加入的边界点可能会对lmax、rmax、midmax等的维护造成影响：当序列中所有的值都是负数时，若边界点的值设为0，将使这3个值也为0，所以，边界点的值应设为-INF（不会影响到sum，因为可以单独调出[l, r]的sum，避开边界）。这就说明并非所有这样的题中都可以设置边界点（比如HFTSC2011的那题就不行），如果边界点会对维护的信息造成影响，就不能设置边界点，在各个操作中，分4种情况判断。（代码已经修改）<br /><br />下面上代码了： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br />#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">stdio.h</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=0;&nbsp;i&lt;n;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">#define</span><span style="color: #000000">&nbsp;re1(i,&nbsp;n)&nbsp;for&nbsp;(int&nbsp;i=1;&nbsp;i&lt;=n;&nbsp;i++)</span><span style="color: #000000"><br /></span><span style="color: #0000ff">const</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;MAXN&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">500002</span><span style="color: #000000">,&nbsp;NOSM&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">2000</span><span style="color: #000000">,&nbsp;INF&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">~</span><span style="color: #000000">0U</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">;<br /></span><span style="color: #0000ff">struct</span><span style="color: #000000">&nbsp;node&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;v,&nbsp;c[</span><span style="color: #000000">2</span><span style="color: #000000">],&nbsp;p,&nbsp;sz,&nbsp;sum,&nbsp;lmax,&nbsp;rmax,&nbsp;midmax,&nbsp;sm;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;rev,&nbsp;d;<br />}&nbsp;T[MAXN&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">];<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;root,&nbsp;Q[MAXN&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;front,&nbsp;rear,&nbsp;a[MAXN],&nbsp;len,&nbsp;res;<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;max(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SS0,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SS1)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;SS0&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;SS1&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;SS0&nbsp;:&nbsp;SS1;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;max(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SS0,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SS1,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SS2)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;M0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SS0&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;SS1&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;SS0&nbsp;:&nbsp;SS1;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;M0&nbsp;</span><span style="color: #000000">&gt;=</span><span style="color: #000000">&nbsp;SS2&nbsp;</span><span style="color: #000000">?</span><span style="color: #000000">&nbsp;M0&nbsp;:&nbsp;SS2;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;newnode(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_v)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;T[n].v&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[n].sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[n].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[n].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[n].midmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_v;&nbsp;T[n].c[</span><span style="color: #000000">0</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[n].c[</span><span style="color: #000000">1</span><span style="color: #000000">]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;&nbsp;T[n].sz&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;T[n].sm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NOSM;&nbsp;T[n].rev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sc(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_p,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;_c,&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;_d)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;T[_p].c[_d]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_c;&nbsp;T[_c].p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_p;&nbsp;T[_c].d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;_d;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;sm_opr(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SM)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].sz&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;SM;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(SM&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;T[x].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].midmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].sum;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;T[x].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].midmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SM;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;rev_opr(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;c0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">];&nbsp;sc(x,&nbsp;c0,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;sc(x,&nbsp;c1,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;tmp&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].lmax;&nbsp;T[x].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].rmax;&nbsp;T[x].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;tmp;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;dm(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;SM0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].sm;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(SM0&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;NOSM)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[x].v&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">]].sm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">]].sm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;SM0;&nbsp;T[x].sm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;NOSM;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sm_opr(T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;SM0);&nbsp;sm_opr(T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">],&nbsp;SM0);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(T[x].rev)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;T[T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">]].rev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">T[T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">]].rev;&nbsp;T[T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">]].rev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">T[T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">]].rev;&nbsp;T[x].rev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rev_opr(T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">]);&nbsp;rev_opr(T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;upd(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;c0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">],&nbsp;c1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].sz&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[c0].sz&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[c1].sz&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[c0].sum&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[c1].sum&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[x].v;<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;max(T[c0].lmax,&nbsp;T[c0].sum&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[x].v&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;max(T[c1].lmax,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">));<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;max(T[c1].rmax,&nbsp;max(T[c0].rmax,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[x].v&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[c1].sum);<br />&nbsp;&nbsp;&nbsp;&nbsp;T[x].midmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;max(T[c0].midmax,&nbsp;T[c1].midmax,&nbsp;max(T[c0].rmax,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;T[x].v&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;max(T[c1].lmax,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">));<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;rot(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;y&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].p;&nbsp;</span><span style="color: #0000ff">bool</span><span style="color: #000000">&nbsp;d&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].d;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(y&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;root)&nbsp;{root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;x;&nbsp;T[root].p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;sc(T[y].p,&nbsp;x,&nbsp;T[y].d);<br />&nbsp;&nbsp;&nbsp;&nbsp;sc(y,&nbsp;T[x].c[</span><span style="color: #000000">!</span><span style="color: #000000">d],&nbsp;d);&nbsp;sc(x,&nbsp;y,&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">d);&nbsp;upd(y);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;splay(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;p;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;((p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[x].p)&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;r)&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(T[p].p&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;r)&nbsp;rot(x);&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(T[x].d&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;T[p].d)&nbsp;{rot(p);&nbsp;rot(x);}&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{rot(x);&nbsp;rot(x);}&nbsp;upd(x);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;Find_Kth(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;K)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;root,&nbsp;S0;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(i)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dm(i);&nbsp;S0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[T[i].c[</span><span style="color: #000000">0</span><span style="color: #000000">]].sz&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(K&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;S0)&nbsp;</span><span style="color: #0000ff">break</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(K&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">&nbsp;S0)&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[i].c[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;{K&nbsp;</span><span style="color: #000000">-=</span><span style="color: #000000">&nbsp;S0;&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[i].c[</span><span style="color: #000000">1</span><span style="color: #000000">];}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;i;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;mkt(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(l&nbsp;</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;r)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Q[front],&nbsp;mid&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;l&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;r&nbsp;</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(front&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;MAXN)&nbsp;front&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;front</span><span style="color: #000000">++</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;newnode(n0,&nbsp;a[mid]);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l_r&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mkt(l,&nbsp;mid&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">),&nbsp;r_r&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;mkt(mid&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;r);<br />&nbsp;&nbsp;&nbsp;&nbsp;sc(n0,&nbsp;l_r,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;sc(n0,&nbsp;r_r,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;upd(n0);&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;n0;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;ins(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;pos)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(pos);&nbsp;splay(P0,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(pos&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P1,&nbsp;root);&nbsp;sc(P1,&nbsp;mkt(</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;len&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">),&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;upd(P1);&nbsp;upd(P0);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;era(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">x)&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(rear&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;MAXN)&nbsp;rear&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;rear</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;Q[rear]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;x;<br />&nbsp;&nbsp;&nbsp;&nbsp;era(T[x].c[</span><span style="color: #000000">0</span><span style="color: #000000">]);&nbsp;era(T[x].c[</span><span style="color: #000000">1</span><span style="color: #000000">]);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;del(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(l&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P0,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(r&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P1,&nbsp;root);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;root0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[P1].c[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;sc(P1,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;upd(P1);&nbsp;upd(P0);&nbsp;era(root0);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;mksame(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(l&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P0,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(r&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P1,&nbsp;root);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[P1].c[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;T[n].sm&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;x;&nbsp;sm_opr(n,&nbsp;x);&nbsp;upd(P1);&nbsp;upd(P0);<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;reve(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(l&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P0,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(r&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P1,&nbsp;root);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[P1].c[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;T[n].rev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">T[n].rev;&nbsp;rev_opr(n);&nbsp;upd(P1);&nbsp;upd(P0);<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;get_sum(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;l,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;r)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P0&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(l&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P0,&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">);&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;P1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;Find_Kth(r&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;splay(P1,&nbsp;root);&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;n&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[P1].c[</span><span style="color: #000000">0</span><span style="color: #000000">];&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;T[n].sum;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;max_sum()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;T[root].midmax;<br />}<br /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;prepare()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;T[</span><span style="color: #000000">0</span><span style="color: #000000">].sz&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[</span><span style="color: #000000">0</span><span style="color: #000000">].sum&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[</span><span style="color: #000000">0</span><span style="color: #000000">].lmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[</span><span style="color: #000000">0</span><span style="color: #000000">].rmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;T[</span><span style="color: #000000">0</span><span style="color: #000000">].midmax&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />&nbsp;&nbsp;&nbsp;&nbsp;front&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">;&nbsp;rear&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;MAXN;&nbsp;re1(i,&nbsp;MAXN)&nbsp;Q[i]&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;newnode(</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">INF);&nbsp;newnode(</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">-</span><span style="color: #000000">INF);&nbsp;sc(</span><span style="color: #000000">1</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">);&nbsp;root&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;T[root].p&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000">"</span><span style="color: #000000">sequence.in</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">r</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;stdin);<br />&nbsp;&nbsp;&nbsp;&nbsp;freopen(</span><span style="color: #000000">"</span><span style="color: #000000">sequence.out</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">w</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;stdout);<br />&nbsp;&nbsp;&nbsp;&nbsp;prepare();<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m,&nbsp;l,&nbsp;r,&nbsp;x;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">len,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">m);&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">&nbsp;ch&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getchar(),&nbsp;str[</span><span style="color: #000000">1000</span><span style="color: #000000">];<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;len)&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a[i]);&nbsp;ins(</span><span style="color: #000000">1</span><span style="color: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;re(i,&nbsp;m)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%s</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;str);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">INSERT</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">l,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">len);&nbsp;re(i,&nbsp;len)&nbsp;scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">a[i]);&nbsp;ins(</span><span style="color: #000000">++</span><span style="color: #000000">l);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">DELETE</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">l,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">r);&nbsp;r&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;l</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;del(l,&nbsp;r);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">MAKE-SAME</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">l,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">r,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">x);&nbsp;r&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;l</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;mksame(l,&nbsp;r,&nbsp;x);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">REVERSE</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">l,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">r);&nbsp;r&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;l</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;reve(l,&nbsp;r);}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">GET-SUM</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;{scanf(</span><span style="color: #000000">"</span><span style="color: #000000">%d%d</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">l,&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">r);&nbsp;r&nbsp;</span><span style="color: #000000">+=</span><span style="color: #000000">&nbsp;l</span><span style="color: #000000">++</span><span style="color: #000000">;&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;get_sum(l,&nbsp;r));}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">!</span><span style="color: #000000">strcmp(str,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">MAX-SUM</span><span style="color: #000000">"</span><span style="color: #000000">))&nbsp;printf(</span><span style="color: #000000">"</span><span style="color: #000000">%d\n</span><span style="color: #000000">"</span><span style="color: #000000">,&nbsp;max_sum());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ch&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;getchar();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;fclose(stdin);&nbsp;fclose(stdout);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br />}<br /></span></div><br />最后把我的这个代码与BYVoid神犇的本题代码进行测试比较，结果（BYVoid神犇的代码见<a title="这里" href="http://www.byvoid.com/blog/noi-2005-sequence/">这里</a>）：<br /><br />BYVoid神犇的：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/matono1/测评结果/BYVoid_Sequence.jpg" width="295" longdesc="" height="166" /><br /><br />本沙茶的：<br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/matono1/测评结果/Mato_No1_Sequence.jpg" width="291" longdesc="" height="166" /><br /><br />【相关论文】<br /><a title="运用伸展树解决数列维护问题" href="http://wenku.baidu.com/view/db0f77661ed9ad51f01df23f.html">运用伸展树解决数列维护问题</a>&nbsp;by JZP<br />【感谢】<br />JZP神犇（提供论文）<br />BYVoid神犇（提供标程）<br /></div><img src ="http://www.cppblog.com/MatoNo1/aggbug/149121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-06-21 16:06 <a href="http://www.cppblog.com/MatoNo1/archive/2011/06/21/149121.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>终于摘掉了不会平衡树的帽子</title><link>http://www.cppblog.com/MatoNo1/archive/2011/06/18/148934.html</link><dc:creator>Mato_No1</dc:creator><author>Mato_No1</author><pubDate>Sat, 18 Jun 2011 13:21:00 GMT</pubDate><guid>http://www.cppblog.com/MatoNo1/archive/2011/06/18/148934.html</guid><wfw:comment>http://www.cppblog.com/MatoNo1/comments/148934.html</wfw:comment><comments>http://www.cppblog.com/MatoNo1/archive/2011/06/18/148934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MatoNo1/comments/commentRss/148934.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MatoNo1/services/trackbacks/148934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天真是有纪念意义啊&#8230;&#8230;以前试着捉了N遍的cashier今天竟然AC了，本沙茶终于掌握了平衡树！！！【Splay Tree及其实现】&lt;1&gt;结点记录的信息：一般情况下Splay Tree是用线性存储器（结构数组）来存储的，可以避免在Linux下的指针异常问题。这样对于某个结点，至少要记录以下的域：值（又叫关键字）、左子结点的下标、右子结点的下标、父结点下标、子树大...&nbsp;&nbsp;<a href='http://www.cppblog.com/MatoNo1/archive/2011/06/18/148934.html'>阅读全文</a><img src ="http://www.cppblog.com/MatoNo1/aggbug/148934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-06-18 21:21 <a href="http://www.cppblog.com/MatoNo1/archive/2011/06/18/148934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>