??xml version="1.0" encoding="utf-8" standalone="yes"?>久久国产免费观看精品,四虎影视久久久免费观看,99久久综合国产精品二区http://www.shnenglu.com/MatoNo1/category/17125.htmlMato是一只超U大沙茶……但他一直以来都x为各Ҏ(gu)赛都No.1的神犇…?/description>zh-cnFri, 02 May 2014 06:01:36 GMTFri, 02 May 2014 06:01:36 GMT60NOI2013 题解&&ȝhttp://www.shnenglu.com/MatoNo1/archive/2013/07/20/201888.htmlMato_No1Mato_No1Sat, 20 Jul 2013 15:43:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2013/07/20/201888.html 不说了囧……

【Day1?br /> meowQ?br /> k=2Q先这N个dl向量组成一个N*d的矩阵A(ch)Q则A*AT&e1;i&e3;&e1;j&e3;(mod 2)是向量i•向量j(mod 2)Q因此问题有解当且仅当A*AT不是??br /> 随机1*N的向量vQ看(v*A)*AT是否{于v*(N*N的全1矩阵)Q如果A*AT不是?那么期望试两ơ就可以得到不等的结果。(如果试了10ơ都是相{,p为无解)
如果两边的乘U不{,则找到那个不{的列,设ؓ(f)Wi列,则必然存在一个解包含向量iQ枚丑֏一个即可。时间复杂度O(Nd)
k=3Q计?A*AT)&e1;i&e3;&e1;j&e3;2(mod 3)Q即(Σ(xik*xjk))2Q即Σ(xik1*xik2*xjk1*xjk2)(mod 3)Q对每个向量构造一个d2l向量,Z前的每个向量各维两两怹的结果,则{化ؓ(f)k=2的情况(只不q将mod 2改ؓ(f)mod 3Q,旉复杂度O(Nd2)Q常数小一点(比如算modQ可以卡q去?br />
countQ?br /> Q正解需要某些很奇怪的性质Q本沙茶看不出来Q只?5分的Q?br /> 递推Q设F&e1;i&e3;&e1;j&e3;和G&e1;i&e3;&e1;j&e3;表示某层是BFS序列?amp;e1;i..j&e3;q一D,?wi)的总高度和?wi)的|Q所求^均值即为F&e1;i&e3;&e1;j&e3; / G&e1;i&e3;&e1;j&e3;Q?br /> 则枚举kQ若k满一定条?/span>Q则F&e1;j+1&e3;&e1;k&e3;+=F&e1;i&e3;&e1;j&e3;+G&e1;i&e3;&e1;j&e3;QG&e1;j+1&e3;&e1;k&e3;+=G&e1;i&e3;&e1;j&e3;?br /> 问题是这?#8220;一定条?#8221;是什么(最难搞的地方囧Q?br /> W零QBFS&e1;j+1..k&e3;q一D늚各个l点在DFS序列中的位置递增Q这个很昄Q?br /> W一QBFS&e1;j+1..k&e3;q一D늚各个l点在DFS序列中的位置之前都必L在BFS&e1;i..j&e3;范围内的l点Q作为它的父l点Q这个也很显ӞQ?br /> W二QDFS序列中,所有在BFS&e1;i..j&e3;范围内的l点的下一个位|如果不是在BFS&e1;0..i-1&e3;范围内的Q就必须是BFS&e1;j+1..k&e3;范围内的Q因表示它的W一个子l点Q这个灰帔R惛_Q!Q!Q!Q!Q!Q!Q!Q本沙茶挂在这里了?#8230;…Q?br /> 对于W零和第一Q实际上是给Zk的上限,枚Dk时不W合q个条g则退出,而第二则是给Zk的下限(所有的“下一个位|?#8221;要填满才能算Q;
此外QF和G要用long doubleQdouble也会(x)爆,不用担心_ֺQ本沙茶当时q在如何l护q_值的问题上纠l了很久……Q?br /> q个做法是O(N3)的,但加上那些优化就可以85分了?#8230;…
Q本沙茶当时惛_q个做法了,也想CW零和第一Q但木有惛_W二Q结果挂?#8230;…要是真得?5分,d254Q稳的rank1?#8230;…真?zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)剧,真(zhn)?#8230;…Q?br />
trainQ?br /> 史上最水的提交{案……整个是个NOIP普及l难度的?#8230;…
首先分析数据׃隑֏现这10个点其实是一U模型:(x)
一开始有若干元钱Q用变量v 2表示Q?br /> 有若q个大块Q每个大块可以选择q或者不q,如果q,p付出一些钱Q如果不q,p动蟩转到后面的某个大块?br /> 在每个大块里有若q个Q不过25个)块Q有1?0个变量,每个块也可以选择要或者不要,如果要,对所有的变量各加上一个效果|可正可负Q?br /> 目标是所有变量的l对g和最大(每个大块末尾?x)结一ơ,然后所有变量的值清Ӟ
首先每个大块内选哪些小块可以暴力枚举,然后得到最大的ȝ对|设ؓ(f)val&e1;i&e3;Qi为大块编PQ设如果不进Wi个大块,跛_的大块编号ؓ(f)B&e1;i&e3;Q第i个大块付出的׃ؓ(f)V&e1;i&e3;?br /> 而大块之间就是一个类g01背包的模型,设F&e1;i&e3;&e1;j&e3;表示到达Wi个大块(未作出选择Q时Q用掉了j元钱的最大L果|用F&e1;i&e3;&e1;j&e3;更新F&e1;B&e1;i&e3;&e3;&e1;j&e3;Q若不超q一开始的总钱数则用F&e1;i&e3;&e1;j&e3;+val&e1;i&e3;更新F&e1;i+1&e3;&e1;j+V&e1;i&e3;&e3;Q要实时保存最优决{?br /> 输出的时候注意一下,那里面有几个点,当钱不够时会(x)自动选择不进当前大块Q木有必要作出选择了?br />
xDay1完挂?br />
【Day2?br /> matrixQ?br /> 矩阵乘法Q十q制快速幂。没了?br />
penmanQ?br /> 比较猥琐的DP?#8230;…
重点是这个:(x)所有的囑Ş都可以拆成单列,一列一列地弄(本沙茶太׃Q这个都木有惌v来)Q然后就是三lDP?br /> NQ设F&e1;i&e3;&e1;j&e3;&e1;k&e3;&e1;st&e3;表示Wi列,上下边界分别为j、k行,状态ؓ(f)Wst个部分(W?部分为最左边一竖,W?部分Z间若q块Q第2部分为最双一竖)的最优解Q计好一列之后求Z大堆辅助|可以下一列O(1)出了?br /> IQ设F&e1;i&e3;&e1;j&e3;&e1;k&e3;&e1;st&e3;表示Wi列,上下边界分别为j、k行,状态ؓ(f)Wst个部分(W?部分为那一竖的左边Q第1部分为那一竖,W?部分为那一竖的双Q的最优解Q不需要辅助|直接求即可;
OQ可以DPQ但更好的办法是枚D左、右、上边界Q然后扫描,说它更好是因为知道了左右边界Q可以直接引出左边的N和右边的I的最优解?br /> 具体实现的时候细节很?#8230;…真折h。还有要注意省空_(d)F数组要对iq一l滚动?br />
foodshopQ?br /> 首先q是个无向环套树(wi)Q关于这斚w的ȝ?a title=""q里"" href=""http://www.shnenglu.com/MatoNo1/archive/2012/09/01/189006.html"">q里Q?br /> 枚D开店的那条边,如果是树(wi)边,求出该边的较下结点往下的最大长度dist1Q以及往其它l点的最q距dist2Q则l果即ؓ(f)min{dist1+x, dist2+L-x}Q满?<=x<=LQL辚w度。dist1求法不说了,dist2分ؓ(f)两部分,?wi)内的,可以转化为经典DP模型“?wi)的中心?#8221;Q树(wi)外的Q先求出环上的每个结点往?wi)中走的最大长度,作ؓ(f)q个l点的权|然后p{化ؓ(f)一个带Ҏ(gu)和点权的环,对于每个点iQ求出max{i、j距离+j的权值}Qj为环上的点)的|q个值可以通过在环上扫描的Ҏ(gu)求出Q设G&e1;i&e3;为第i个点出发Q逆时针走更优的位|最q到哪里。逆时针扫描这个环Q然后所有的G可以在U性时间内求出Q求出G后,Ҏ(gu)个点分别求出光时针更优区与顺旉更优区内的最大|可以在扫描过E中用线D|(wi)l护Q,卛_解决q个问题?br /> 如果开店的边在环上Q设其两端点为i、jQi->j为逆时针方向)。很Ҏ(gu)发现Q如果在q条边上开店,则j的逆时针更优区内的所有点一定是逆时针到q个店更q,i的顺旉更优区内的所有点一定是时针到q个店更q,而其它的点则需要额外判断一下是时针更q还是逆时针更q(d断次Cؓ(f)U性)。这样也可以借助U段?wi)在扫描q程中求出每条环边的、逆时针更优区Q从而{化ؓ(f)与树(wi)边的问题一L(fng)模型。时间复杂度O(NlogN)?br /> 不过Q对于环边,q有一U更单的做法QOrz @hzaQ:(x)
二分最q距(即结果)DQ然后对于环上的所有点Q找到这个环上到q个点距d于(D-q个Ҏ(gu)(wi)里的最大深度)的点集合Q显然是q箋的一D弧Q,Ҏ(gu)有点的这U弧求ƈQ如果能覆盖整个环,则最优解<DQ否则最优解>=D?br />
本沙茶Day2全暴力,只拿了暴力分……对付J琐题的能力太弱了,代码量一大就(zhn)剧……
Q后来发玎ͼfoodshop的暴力都写疵了囧……枚D开店的边后应该用SPFA求最短\Q因为删掉的可能是树(wi)边,剩下的不是树(wi)……不过数据弱,木有出现q种情况?#8230;…Q?br />
xNOI2013完挂?br /> ———————————————————————————————————————————————————
【ȝ && 一些感惟?br /> 从上面可以看出,本沙茶在NOI2013中用的法都是NOIP普及l以内难度的囧(matrix的矩阵乘法可能略高一些,但显然也不能过NOIP隑ֺQ?#8230;…
q些法都是本沙茶在2009q以前就搞懂的,也就是说Q后4q掌握的所有算法,q次都木有用?#8230;…
最后一ơNOIQ竟如此富有戏剧?#8230;…居然只考普及组法……
图论、高U数据结构、字W串、几何、数论、组?#8230;…q次都木有考,q也是NOI历史上的一?#8220;创D”了囧……
但尽如此,本沙茶在此次NOI中仍然暴露出了诸多问?#8230;…q不是比赛技巧问题,而是qx埋下的祸?#8230;…
想题不够灉|Q找不出题目隐藏的特D性质Q特D情况考虑不清楚,写代码速度太慢……q些都是qx不好好做题,天天颓废的结?#8230;…
因此Q这ơ挂掉,也是理所应当的事……
遗失了过去,因此Q现在后(zhn)了…………………………………………………………………

不过Q不肿么讲Q还是؜q了集训?#8230;…集训队是一个新的开始,每天都面临巨大的挑战Q同时每天都能得到巨大的提高……
虽然本沙茶现在很弱,应付N的能力还q远不够Q但l过q一q的训练Q相信可以改变这一切,快p……
希望q能是一个{折点?br /> 50Q?2Q?Q?Q??/span>
———————————————————————————————————————————————————
膜拜本次虐场犇
@鼎爷
@xudyh
@xyz111
@hzaskywalker(FFT)
@hzhwcmhf
@zhj
@g
@sunzhouyi
以及众多虐掉count、penman、foodshop的神?#8230;…


Mato_No1 2013-07-20 23:43 发表评论
]]>
【AHOI2013复仇】NOI2008 道\设计http://www.shnenglu.com/MatoNo1/archive/2012/09/22/191595.htmlMato_No1Mato_No1Sat, 22 Sep 2012 08:21:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2012/09/22/191595.htmlhttp://www.shnenglu.com/MatoNo1/comments/191595.htmlhttp://www.shnenglu.com/MatoNo1/archive/2012/09/22/191595.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/191595.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/191595.html原题地址
典型的二ơ递推/DP的题目?br />首先Q题目中?#8220;不便利?#8221;指的是某个点到根的\径上的木有被选定链覆盖的边的条数?br />
W一问:(x)设F[i][0..2]分别为当子树(wi)i中结点i的状态ؓ(f)不参与链Q?Q、作为某铄点(1Q、作为某链中间点Q?Q时Q子?wi)i中的l点到i的最不便利倹{ؓ(f)了得到FQ需要设立G[j][k(0..2)]表示l点i的前j子?wi)中Q有k늚根结点与l点i接上的最的最大不便利倹{显Ӟ不和i接上的,状态ؓ(f)0??都行Q但不便利D?Q而和i接上的状态只能是0?Q不??br />
问题是第二问。第二问的难点在于,当i取得最不便利值时Qi的每个子l点q都取到最不便利?/strong>。D个例子,l点i的最不便利gؓ(f)3Q它的某个子l点j的最不便利gؓ(f)2Q则当j与i接上Ӟ子树(wi)j的内部既可以取不便利gؓ(f)2的解Q也可以取不便利gؓ(f)3的解。所以,Z解决W二问,需要求出结点i的最不便利gؓ(f)x的解的L?strong>万幸的是Qx的范围ƈ不是太大Q可以证明,x不会(x)过log3NQ下取整Q,也就是当N=100000时x最大ؓ(f)10?/span>因此Q最后仍然不?x)T掉?br />
q题的一个启C就是,在求cM?#8220;最优解计数”的问题中Q?span style="color: red">不要认ؓ(f)当后面的状态取得最优解Ӟ前面的状态一定取得最优解?/strong>因此Q不能只记录某状态取得最优解的个敎ͼ而要记录该状态取得每一个可行解时的个数?br />
代码Q?
#include <iostream>
#include 
<stdio.h>
#include 
<stdlib.h>
#include 
<string.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
#define rre(i, n) for (int i=n-1; i>=0; i--)
#define rre1(i, n) for (int i=n; i>0; i--)
#define rre2(i, r, l) for (int i=r-1; i>=l; i--)
#define rre3(i, r, l) for (int i=r; i>=l; i--)
#define ll long long
const int MAXN = 100010, MAXW = 11, INF = ~0U >> 2;
struct edge {
    
int a, b, pre, next;
} E0[MAXN 
* 3], E[MAXN << 1];
int n, m0, m, Q[MAXN], F[MAXN][3], G[MAXN][3], res1 = 0;
ll MOD, FS[MAXN][MAXW][
3], S[MAXN][MAXW][3], res2 = 0;
bool vst[MAXN];
void init_d()
{
    re(i, n) E0[i].pre 
= E0[i].next = E[i].pre = E[i].next = i; m0 = m = n;
}
void add_edge0(int a, int b)
{
    E0[m0].a 
= a; E0[m0].b = b; E0[m0].pre = E0[a].pre; E0[m0].next = a; E0[a].pre = m0; E0[E0[m0].pre].next = m0++;
    E0[m0].a 
= b; E0[m0].b = a; E0[m0].pre = E0[b].pre; E0[m0].next = b; E0[b].pre = m0; E0[E0[m0].pre].next = m0++;
}
void add_edge(int a, int b)
{
    E[m].a 
= a; E[m].b = b; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
}
void init()
{
    
int _M; scanf("%d%d"&n, &_M); cin >> MOD; if (_M < n - 1) {res1 = res2 = -1return;} init_d(); int a0, b0;
    re2(i, 
1, n) {scanf("%d%d"&a0, &b0); add_edge0(--a0, --b0);}
}
void prepare()
{
    re(i, n) vst[i] 
= 0; Q[0= 0; vst[0= 1int x, y;
    
for (int front=0, rear=0; front<=rear; front++) {
        x 
= Q[front];
        
for (int p=E0[x].next; p != x; p=E0[p].next) {
            y 
= E0[p].b;
            
if (!vst[y]) {vst[y] = 1; Q[++rear] = y; add_edge(x, y);}
        }
    }
    re(i, n) 
if (!vst[i]) {res1 = -1; res2 = -1return;}
}
inline 
int minv3(int s1, int s2, int s3)
{
    
int s0 = s1 <= s2 ? s1 : s2;
    
return s0 <= s3 ? s0 : s3;
}
inline 
int minv2(int s1, int s2)
{
    
return s1 <= s2 ? s1 : s2;
}
void solve()
{
    
int x, y, len, v1, v2, v01, v02; ll sum;
    rre(i, n) {
        x 
= Q[i]; len = 0; G[0][0= 0; G[0][1= G[0][2= INF;
        
for (int p=E[x].next; p != x; p=E[p].next) {
            y 
= E[p].b; len++;
            v1 
= minv3(F[y][0], F[y][1], F[y][2]) + 1; v2 = minv2(F[y][0], F[y][1]);
            G[len][
0= v1 >= G[len - 1][0? v1 : G[len - 1][0];
            v01 
= v1 >= G[len - 1][1? v1 : G[len - 1][1];
            v02 
= v2 >= G[len - 1][0? v2 : G[len - 1][0];
            G[len][
1= minv2(v01, v02);
            v01 
= v1 >= G[len - 1][2? v1 : G[len - 1][2];
            v02 
= v2 >= G[len - 1][1? v2 : G[len - 1][1];
            G[len][
2= minv2(v01, v02);
        }
        re(j, 
3) F[x][j] = G[len][j];
        re(j, MAXW) {S[
0][j][0= 1; S[0][j][1= S[0][j][2= 0;} len = 0;
        
for (int p=E[x].next; p != x; p=E[p].next) {
            y 
= E[p].b; len++;
            re(j, MAXW) re(k, 
3) {
                S[len][j][k] 
= 0;
                
if (j) {
                    sum 
= 0; re(k0, 3) {sum += FS[y][j - 1][k0]; if (sum >= MOD) sum -= MOD;}
                    S[len][j][k] 
= (sum * S[len - 1][j][k]) % MOD;
                }
                
if (k) {
                    sum 
= 0; re(k0, 2) {sum += FS[y][j][k0]; if (sum >= MOD) sum -= MOD;}
                    S[len][j][k] 
= (S[len][j][k] + sum * S[len - 1][j][k - 1]) % MOD;
                }
            }
        }
        re(j, MAXW) re(k, 
3) FS[x][j][k] = S[len][j][k];
    }
    res1 
= minv3(F[0][0], F[0][1], F[0][2]);
    res2 
= 0; re(i, 3if (F[0][i] == res1) res2 += FS[0][F[0][i]][i]; res2 %= MOD;
}
void pri()
{
    cout 
<< res1 << endl << res2 << endl;
}
int main()
{
    init();
    
if (!res1) prepare();
    
if (!res1) solve();
    pri();
    
return 0;
}




Mato_No1 2012-09-22 16:21 发表评论
]]>
【AHOI2013复仇】NOI2012 park 一U巨另类的做?/title><link>http://www.shnenglu.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.shnenglu.com/MatoNo1/archive/2012/09/08/189952.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/189952.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2012/09/08/189952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/189952.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/189952.html</trackback:ping><description><![CDATA[     摘要: 原题地址q个法是由本沙茶在现场使用的那个做法扩展得来的……其实AC不了Q后两个点会(x)因ؓ(f)常数q大而T?#8230;…但在BZOJ上算L间的话能AC……首先考虑?wi)的情Ş。设F[i]Z点i开始,往子树(wi)i里面赎ͼ到达叶结点的期望长度Q则很容易得到递推公式QF[i] = (ΣF[j] + W(i, j)) / KQ其中j是i的子l?..  <a href='http://www.shnenglu.com/MatoNo1/archive/2012/09/08/189952.html'>阅读全文</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/189952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2012-09-08 19:27 <a href="http://www.shnenglu.com/MatoNo1/archive/2012/09/08/189952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2011团体Ҏ(gu)赛专?/title><link>http://www.shnenglu.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.shnenglu.com/MatoNo1/archive/2011/07/28/152006.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/152006.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2011/07/28/152006.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/152006.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/152006.html</trackback:ping><description><![CDATA[<div>此帖用于记录NOI2011团体Ҏ(gu)赛的各版本(代码Q更新情c?br />————————————————————————————————————————————————————<br />?011q??8日?br />目前代码框架QProgram0.cppQ已l完成?br />NOI2011团体Ҏ(gu)赛安徽队的代码名U初步定为:(x)Docx<br />————————————————————————————————————————————————————<br />?011q??9日?br />Docx I已经完成Q代码长度(包括注释Qؓ(f)5368Bytes<br />版本说明Q?br />Q?Q对优势分数G的计ؓ(f)G2.1版本Q?br />Q?Q启发函数还比较弱;<br />目前׃评机问题,暂时无法试Q只有看晚上的练?fn)赛了?br />————————————————————————————————————————————————————<br />?011q??0日?br />今天U然发现了Docx I的一个严重错误:(x)在判定是否有炸弹的时候把true和false弄反了,l果D炸弹Ҏ(gu)无法使用?br />现在Ҏ(gu)了之后(仍然命名为Docx IQ,TESTl果仍然不是很理惻I只能虐别人的一些初{版本,高等版本Q比如那?I Hate Zerg"的版?Q根本木有办法?br />目前正在改进启发函数Q争取在明天下午之前出Docx II?br />————————————————————————————————————————————————————<br />?011q??日?br />真惊险!最后时ȝ于找C问题所在,q且把Docx IIl最后一步改q得到的版本命名为Docx IIIQ提交到排位赛?br />最后结?#8230;…q行Q第3?#8230;…只是严重怀疑有强省故意放水……<br />大概明天正式分组p出来?#8230;…<br />————————————————————————————————————————————————————<br />?011q??日?br />分组l果已经出来Q安徽队的Ş势还是比较有利的……<br /><br />好了Q在8?0日下午以前都不用再管团体Ҏ(gu)赛了……全力冲刺个h竞赛……<br />————————————————————————————————————————————————————<br />?011q??0日?br />团体Ҏ(gu)赛最后冲刺?br />今天把几个地方的pL改了一下,一些看h很傻的决{也得到了修正。不q晚上练?fn)赛的结果仍然很不理?#8230;…<br />了Q明?/4册{着被血z吧?#8230;…<br /><br />现在q有一Ҏ(gu)_(d)乱搞一下吧?#8230;…<br />————————————————————————————————————————————————————<br />?011q??1日?br />最l结果:(x)八强Q?/4册中被湖南血z?br /><br />昄是一个预想之中的l果……q是应验了那句话Q团体对抗赛到湖南是找死……<br />q次Q本沙茶真的已经力?#8230;…<br />明年再来?#8230;…<br /></div> <img src ="http://www.shnenglu.com/MatoNo1/aggbug/152006.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-07-28 22:08 <a href="http://www.shnenglu.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.shnenglu.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.shnenglu.com/MatoNo1/archive/2011/07/20/151509.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/151509.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2011/07/20/151509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/151509.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/151509.html</trackback:ping><description><![CDATA[     摘要: 【原题见q里】很明显的精覆盖的模型Q?2个零Ӟ再加上它们经q旋转、翻转后的不同ŞӞ?0U,每种又可以放在不同的位置Q只看最左上的那个珠子)一U零件的一U位|就是一行。列Q限Ӟ有两U:(x)每个格子只能放一个(55列)Q以及每个零Ӟ注意是每个零Ӟ不是每种零gQ只能用一ơ(12列)Q共67列。预先放的那些零件可以看成预先选中的行。然后DLX_覆盖卛_。下面是DLX_覆盖的几个易늂Q(1Q?..  <a href='http://www.shnenglu.com/MatoNo1/archive/2011/07/20/151509.html'>阅读全文</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/151509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-07-20 23:07 <a href="http://www.shnenglu.com/MatoNo1/archive/2011/07/20/151509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>NOI2008 partyhttp://www.shnenglu.com/MatoNo1/archive/2011/07/14/150967.htmlMato_No1Mato_No1Thu, 14 Jul 2011 04:23:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2011/07/14/150967.htmlhttp://www.shnenglu.com/MatoNo1/comments/150967.htmlhttp://www.shnenglu.com/MatoNo1/archive/2011/07/14/150967.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/150967.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/150967.htmlq里QBZOJ和BSOJ都挂了,真杯P只能借助RQ了囧……Q?br />
隑ֺ不是很大Q就是特D情冉|较多Q比较猥琐(不过本题数据弱,q不考虑所有的Ҏ(gu)情况也能q?个点Q?br />首先O(NM)的朴素算法很好想刎ͼ(x)枚DKQ然后给每个l点~号卛_。在~号Ӟ先随便指定一个未~号的点Q设它的~号?Q然后遍历所有和它相兌的边Q这里可以把原图惌成一个无向图Q,这些边的另一个端点编上号卛_Q中间若某个点的~号出现矛盾Q则q个K不合法,否则q个K合法?br />然后q行优化Q合法的K实际上是有限制的Q它必然是某个数的因敎ͼ具体来说Q对q个图进行DFSQƈ考察其中所有的跨越边和逆向边,对于跨越?lt;i, j>Q设遍历?wi)中i、j间距Mؓ(f)DQ则合法的K必然?D-1)的因敎ͼ因ؓ(f)i和遍历树(wi)中j的父l点都有指向j的边Q它们的~号应相同,而它们之间的距离?D-1)Q;对于逆向?lt;i, j>Q设遍历?wi)中i、j间距Mؓ(f)D'Q则合法的K必然?D'+1)的因敎ͼ因ؓ(f)q里形成了一个环Q环的长度ؓ(f)(D'+1)Q。这样一来就明显~小了K的取D_(d)再进行枚举,可以显著羃短时间?br />
下面是一些极其猥琐的Ҏ(gu)情况Q?br />Q?Q根据题意,必须是KcLc都有,因此在尝试编h功(没有发生M矛盾Q后Q还要看一?span style="color: red">实际出现的编h?/strong>是否{于KQ若于KQ同样不合法Q?br />Q?Q该囄基图可能不连通,此时对于其基囄每个q通块Q其~号互不影响Q所以要Ҏ(gu)个连通块分别l计实际出现的编h目,讑֮们的和ؓ(f)SUMQ则不大于SUM的K值均合法Q只要中间不出现矛盾Q,因此可以直接得到最大gؓ(f)SUMQ提前结束;不过Q这U特判只有在d实际出现的编h目小于K的情况下才能q行Q?br />Q?Q由于考察的是实际出现的编h目,因此最后求出的最大倹{最值可能小?Q这时应作出如下处理Q若最大值小?Q则无解Q若最值小?Q则最值改??br />
本题比较猥琐的数据是W???个点Q分别出C上述的第Q?Q、(2Q、(3Q种Ҏ(gu)情况Q此外,q三个点建出的图中竟然没有一条跨边或逆向边!

代码Q?
#include <iostream>
#include 
<stdio.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re2(i, l, r) for (int i=l; i<r; i++)
#define re3(i, l, r) for (int i=l; i<=r; i++)
const int MAXN = 100000, MAXM = 1100001;
struct edge {
    
int a, b, s, pre, next;
} E0[MAXM], E[MAXM 
+ MAXM];
int n, m0, m, P, len, X[MAXN], No[MAXN], stk[MAXN], st[MAXN], dep[MAXN], V[MAXN], fo[MAXN], Q[MAXN], res0, res1;
bool vst[MAXN], T0[MAXN];
long long T[MAXN], _Z = 0;
void init_d()
{
    re(i, n) E[i].a 
= E[i].pre = E[i].next = E0[i].a = E0[i].pre = E0[i].next = i;
    m0 
= n; if (n % 2) m = n + 1else m = n;
}
void add_edge(int a, int b)
{
    E0[m0].a 
= a; E0[m0].b = b; E0[m0].pre = E0[a].pre; E0[m0].next = a; E0[a].pre = m0; E0[E0[m0].pre].next = m0++;
    E[m].a 
= a; E[m].b = b; E[m].s = 1; E[m].pre = E[a].pre; E[m].next = a; E[a].pre = m; E[E[m].pre].next = m++;
    E[m].a 
= b; E[m].b = a; E[m].s = -1; E[m].pre = E[b].pre; E[m].next = b; E[b].pre = m; E[E[m].pre].next = m++;
}
void init()
{
    freopen(
"party.in""r", stdin);
    
int _m, a, b; scanf("%d%d"&n, &_m); init_d();
    re(i, _m) {
        scanf(
"%d%d"&a, &b);
        add_edge(
--a, --b);
    }
    fclose(stdin);
}
int gcd(int a, int b)
{
    
int r;
    
while (b) {
        r 
= a % b; a = b; b = r;
    }
    
return a;
}
void prepare()
{
    
int tp, x, y, ord = 0;
    
bool fd;
    re(i, n) V[i] 
= 0; P = 0;
    re(i, n) 
if (!V[i]) {
        stk[tp 
= 0= i; fo[i] = ord++; V[i] = 1; st[i] = E0[i].next; dep[i] = 0;
        
while (tp >= 0) {
            x 
= stk[tp]; fd = 0;
            
for (int p=st[x]; p != x; p=E0[p].next) {
                y 
= E0[p].b;
                
if (!V[y]) {
                    stk[
++tp] = y; fo[y] = ord++; V[y] = 1; st[y] = E0[y].next; dep[y] = dep[x] + 1; st[x] = E0[p].next; fd = 1break;
                } 
else if (V[y] == 1) P = gcd(P, dep[x] - dep[y] + 1); else if (fo[y] > fo[x]) P = gcd(P, dep[y] - dep[x] - 1);
            }
            
if (!fd) {V[x] = 2; tp--;}
        }
    }
    len 
= 0; re3(i, 3, n) if (!(P % i)) X[len++= i;
}
int test(int K)
{
    re(i, n) {vst[i] 
= 0; No[i] = -1;}
    re(i, K) T0[i] 
= 0;
    
int x, y, No0, sum = 0, sum0 = 0;
    re(i, n) 
if (!vst[i]) {
        No[i] 
= 0; Q[0= i; vst[i] = 1; _Z++if (T[0!= _Z) {T[0= _Z; sum++;} if (!T0[0]) {T0[0= 1; sum0++;}
        
for (int front=0, rear=0; front<=rear; front++) {
            x 
= Q[front];
            
for (int p=E[x].next; p != x; p=E[p].next) {
                y 
= E[p].b; No0 = No[x] + E[p].s;
                
if (No0 == K) No0 = 0else if (No0 == -1) No0 = K - 1;
                
if (No[y] >= 0 && No0 != No[y]) return -1else {
                    No[y] 
= No0;
                    
if (T[No0] != _Z) {T[No0] = _Z; sum++;}
                    
if (!T0[No0]) {T0[No0] = 1; sum0++;}
                }
                
if (!vst[y]) {vst[y] = 1; Q[++rear] = y;}
            }
        }
    }
    
if (sum0 < K) res0 = sum;
    
return sum0;
}
void solve()
{
    
int K, K0; res0 = res1 = -1;
    re(i, len) {
        K 
= X[i]; K0 = test(K);
        
if (K0 != -1) {
            
if (res1 == -1) res1 = K0;
            
if (K0 < K) breakelse res0 = K;
        }
    }
    
if (res0 < 3) res0 = res1 = -1else if (res1 < 3) res1 = 3;
}
void pri()
{
    freopen(
"party.out""w", stdout);
    printf(
"%d %d\n", res0, res1);
    fclose(stdout);
}
int main()
{
    init();
    prepare();
    solve();
    pri();
    
return 0;
}



Mato_No1 2011-07-14 12:23 发表评论
]]>
【NOI2005 l护数列(sequence)】Splay Tree处理序列问题http://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlMato_No1Mato_No1Tue, 21 Jun 2011 08:06:00 GMThttp://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.htmlhttp://www.shnenglu.com/MatoNo1/comments/149121.htmlhttp://www.shnenglu.com/MatoNo1/archive/2011/06/21/149121.html#Feedback0http://www.shnenglu.com/MatoNo1/comments/commentRss/149121.htmlhttp://www.shnenglu.com/MatoNo1/services/trackbacks/149121.html【原题见q里?br />本题是Splay Tree处理序列问题Q也是当线D|(wi)用)的一个典型例题?br />
Splay Tree之所以可以当U段?wi)用Q是因ؓ(f)它可以支持一个序列,然后?#8220;左端前趋伸展到根Q右端后l展到根的叛_l点Q取根的叛_l点的左子结?#8221;q种伸展Ҏ(gu)Q对一个序列中的一整段q行整体操作。由于要防止出现前趋或后l不存在的情况,需要在q个序列的两端加入两个边界结点,要求其g能媄响到l点各种记蝲信息的维护(多取0?#8734;?∞Q。这两个边界l点在树(wi)中永q存在,不会(x)被删除?br />
Q?Q结点的引用Q?br />在当U段?wi)用的Splay Tree中,真正的关键字是下标而不是|因此Q?#8220;序列中第i个结?#8221;实际上对应的?#8220;?wi)中W?i+1)的l点”Q因为左边还有一个边界结点)Q这p明在对结点引用时需要找WK的操作。因此,下面?#8220;l点x”指的?#8220;?wi)中W?x+1)的l点”?br />Q?Q标讎ͼ(x)
在线D|(wi)中,如果对一个结Ҏ(gu)表示的线D|体进行了某种操作Q需要在q个l点上打上一个标讎ͼ在下一ơ再扑ֈq个l点Ӟ其标记就?x)下攑ֈ其两个子l点上。在Splay Tree中也可以引入标记。比如要对[2, 6]q一D进行整体操作,将l点1伸展到根的位|,结?伸展到根的右子树(wi)的位|,然后l点7的左子树(wi)pC[2, 6]q一D,对这子?wi)的根结?gu)上标记ƈ立即生效Q必L立即生效Q而不是等下一ơ引用再生效Q,也就是立x变该l点记录的一些信息的倹{如果下ơ再ơ引用到q个l点Q就要将其标C攑ֈ其两个子l点处;
需要注意的一Ҏ(gu)Q如果要伸展某个l点x到r的子l点的位|,必M证从x原来的位|到r的这个子l点Qx伸展后的位置Q上的所有结点上均没有标讎ͼ否则׃(x)D标记混ؕ。因此,必须首先扑ֈq个l点xQ在此过E中不断下放标记?br />Q?Q自底向上维护的信息Q?br />标记可以看成一U自向下维护的信息。除了标C外,作ؓ(f)“U段?#8221;Q往往q要l护一些自底向上维护的信息。比如在sequenceq题中,有lmaxQ左D连l最大和Q、rmaxQ右D连l最大和Q、midmaxQ全D连l最大和Q以及sumQ全D|dQ等信息要维护。对于这cM东其实也很好办,因ؓ(f)子树(wi)大小Qsz域)是一U自底向上维护的信息Q因此对于这些信息只要按照维护sz域的办法l护卛_Q统一写在upd函数里)。唯一的不同点是打标记时它们的值可能要改变?br />Q?Q对q箋插入的结点徏?wi)?x)
本题的插入不是一个一个插入,而是一下子插入一整段Q因此需要先它们徏成一|(wi)。一般徏?wi)操作都是递归的,q里也一栗设目前要对A[l..r]建树(wi)QA为待插入序列Q,若l>r则退出,否则扑ֈ位于中间的元素mid = l + r >> 1Q将A[mid]作根Q再对A[l..mid-1]建左子树(wi)Q对A[mid+1..r]建右子树(wi)卛_。这样可以保证一开始徏的就是一^衡树(wi)Q减常数因子?br />Q?Q回收空_(d)(x)
Ҏ(gu)本题的数据范围提C,插入的结Ҏ(gu)L最多可能达?000000Q但在Q何时L(wi)中最多只?00002个结点(包括两个边界Q,此时Z节省I间Q可以采用@环队列回收空间的Ҏ(gu)。即Q一开始将所有的可用I间Q可用下标,本题?~500002Q存在@环队列Q里,同时讄头尾指针front和rearQ每ơ如果有新结Ҏ(gu)入,取出Q[front]q作为新l点的下标,如果有结点要删除Q本题是一ơ删除整子?wi),因此在删除后需要分别回收它们的I间Q,则从rear开始,每个删除的l点的下标放回到Q里。当Ӟq种Ҏ(gu)是要牺牲一定的旉的,因此在空间不是特别吃紧的情况下不要用?br />
?012q??6日更新?br />今天重写sequence的时候,U然发现加入的边界点可能?x)对lmax、rmax、midmax{的l护造成影响Q当序列中所有的值都是负数时Q若边界点的D?Q将使这3个g?Q所以,边界点的值应设ؓ(f)-INFQ不?x)媄响到sumQ因为可以单独调出[l, r]的sumQ避开边界Q。这p明ƈ非所有这L(fng)题中都可以设|边界点Q比如HFTSC2011的那题就不行Q,如果边界点会(x)对维护的信息造成影响Q就不能讄边界点,在各个操作中Q分4U情况判断。(代码已经修改Q?br />
下面上代码了Q?
#include <iostream>
#include 
<stdio.h>
using namespace std;
#define re(i, n) for (int i=0; i<n; i++)
#define re1(i, n) for (int i=1; i<=n; i++)
const int MAXN = 500002, NOSM = -2000, INF = ~0U >> 2;
struct node {
    
int v, c[2], p, sz, sum, lmax, rmax, midmax, sm;
    
bool rev, d;
} T[MAXN 
+ 1];
int root, Q[MAXN + 1], front, rear, a[MAXN], len, res;
int max(int SS0, int SS1)
{
    
return SS0 >= SS1 ? SS0 : SS1;
}
int max(int SS0, int SS1, int SS2)
{
    
int M0 = SS0 >= SS1 ? SS0 : SS1; return M0 >= SS2 ? M0 : SS2;
}
void newnode(int n, int _v)
{
    T[n].v 
= T[n].sum = T[n].lmax = T[n].rmax = T[n].midmax = _v; T[n].c[0= T[n].c[1= 0; T[n].sz = 1; T[n].sm = NOSM; T[n].rev = 0;
}
void sc(int _p, int _c, bool _d)
{
    T[_p].c[_d] 
= _c; T[_c].p = _p; T[_c].d = _d;
}
void sm_opr(int x, int SM)
{
    T[x].sum 
= T[x].sz * SM;
    
if (SM > 0) T[x].lmax = T[x].rmax = T[x].midmax = T[x].sum; else T[x].lmax = T[x].rmax = T[x].midmax = SM;
}
void rev_opr(int x)
{
    
int c0 = T[x].c[0], c1 = T[x].c[1]; sc(x, c0, 1); sc(x, c1, 0);
    
int tmp = T[x].lmax; T[x].lmax = T[x].rmax; T[x].rmax = tmp;
}
void dm(int x)
{
    
int SM0 = T[x].sm;
    
if (SM0 != NOSM) {
        T[x].v 
= T[T[x].c[0]].sm = T[T[x].c[1]].sm = SM0; T[x].sm = NOSM;
        sm_opr(T[x].c[
0], SM0); sm_opr(T[x].c[1], SM0);
    }
    
if (T[x].rev) {
        T[T[x].c[
0]].rev = !T[T[x].c[0]].rev; T[T[x].c[1]].rev = !T[T[x].c[1]].rev; T[x].rev = 0;
        rev_opr(T[x].c[
0]); rev_opr(T[x].c[1]);
    }
}
void upd(int x)
{
    
int c0 = T[x].c[0], c1 = T[x].c[1];
    T[x].sz 
= T[c0].sz + T[c1].sz + 1;
    T[x].sum 
= T[c0].sum + T[c1].sum + T[x].v;
    T[x].lmax 
= max(T[c0].lmax, T[c0].sum + T[x].v + max(T[c1].lmax, 0));
    T[x].rmax 
= max(T[c1].rmax, max(T[c0].rmax, 0+ T[x].v + T[c1].sum);
    T[x].midmax 
= max(T[c0].midmax, T[c1].midmax, max(T[c0].rmax, 0+ T[x].v + max(T[c1].lmax, 0));
}
void rot(int x)
{
    
int y = T[x].p; bool d = T[x].d;
    
if (y == root) {root = x; T[root].p = 0;} else sc(T[y].p, x, T[y].d);
    sc(y, T[x].c[
!d], d); sc(x, y, !d); upd(y);
}
void splay(int x, int r)
{
    
int p; while ((p = T[x].p) != r) if (T[p].p == r) rot(x); else if (T[x].d == T[p].d) {rot(p); rot(x);} else {rot(x); rot(x);} upd(x);
}
int Find_Kth(int K)
{
    
int i = root, S0;
    
while (i) {
        dm(i); S0 
= T[T[i].c[0]].sz + 1;
        
if (K == S0) breakelse if (K < S0) i = T[i].c[0]; else {K -= S0; i = T[i].c[1];}
    }
    
return i;
}
int mkt(int l, int r)
{
    
if (l > r) return 0;
    
int n0 = Q[front], mid = l + r >> 1if (front == MAXN) front = 1else front++;
    newnode(n0, a[mid]); 
int l_r = mkt(l, mid - 1), r_r = mkt(mid + 1, r);
    sc(n0, l_r, 
0); sc(n0, r_r, 1); upd(n0); return n0;
}
void ins(int pos)
{
    
int P0 = Find_Kth(pos); splay(P0, 0); int P1 = Find_Kth(pos + 1); splay(P1, root); sc(P1, mkt(0, len - 1), 0); upd(P1); upd(P0);
}
void era(int x)
{
    
if (!x) return;
    
if (rear == MAXN) rear = 1else rear++; Q[rear] = x;
    era(T[x].c[
0]); era(T[x].c[1]);
}
void del(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int root0 = T[P1].c[0]; sc(P1, 00); upd(P1); upd(P0); era(root0);
}
void mksame(int l, int r, int x)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; T[n].sm = x; sm_opr(n, x); upd(P1); upd(P0);
}
void reve(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; T[n].rev = !T[n].rev; rev_opr(n); upd(P1); upd(P0);
}
int get_sum(int l, int r)
{
    
int P0 = Find_Kth(l - 1); splay(P0, 0); int P1 = Find_Kth(r + 1); splay(P1, root); 
    
int n = T[P1].c[0]; return T[n].sum;
}
int max_sum()
{
    
return T[root].midmax;
}
void prepare()
{
    T[
0].sz = T[0].sum = T[0].lmax = T[0].rmax = T[0].midmax = 0;
    front 
= 3; rear = MAXN; re1(i, MAXN) Q[i] = i;
    newnode(
1-INF); newnode(2-INF); sc(121); root = 1; T[root].p = 0;
}
int main()
{
    freopen(
"sequence.in""r", stdin);
    freopen(
"sequence.out""w", stdout);
    prepare();
    
int m, l, r, x;
    scanf(
"%d%d"&len, &m); char ch = getchar(), str[1000];
    re(i, len) scanf(
"%d"&a[i]); ins(1);
    re(i, m) {
        scanf(
"%s", str);
        
if (!strcmp(str, "INSERT")) {scanf("%d%d"&l, &len); re(i, len) scanf("%d"&a[i]); ins(++l);}
        
if (!strcmp(str, "DELETE")) {scanf("%d%d"&l, &r); r += l++; del(l, r);}
        
if (!strcmp(str, "MAKE-SAME")) {scanf("%d%d%d"&l, &r, &x); r += l++; mksame(l, r, x);}
        
if (!strcmp(str, "REVERSE")) {scanf("%d%d"&l, &r); r += l++; reve(l, r);}
        
if (!strcmp(str, "GET-SUM")) {scanf("%d%d"&l, &r); r += l++; printf("%d\n", get_sum(l, r));}
        
if (!strcmp(str, "MAX-SUM")) printf("%d\n", max_sum());
        ch 
= getchar();
    }
    fclose(stdin); fclose(stdout);
    
return 0;
}

最后把我的q个代码与BYVoid犇的本题代码进行测试比较,l果QBYVoid犇的代码见q里Q:(x)

BYVoid犇的:(x)


本沙茶的Q?br />

【相兌文?br />

Mato_No1 2011-06-21 16:06 发表评论
]]>
l于摘掉了不?x)^衡树(wi)的帽?/title><link>http://www.shnenglu.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.shnenglu.com/MatoNo1/archive/2011/06/18/148934.html</guid><wfw:comment>http://www.shnenglu.com/MatoNo1/comments/148934.html</wfw:comment><comments>http://www.shnenglu.com/MatoNo1/archive/2011/06/18/148934.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/MatoNo1/comments/commentRss/148934.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/MatoNo1/services/trackbacks/148934.html</trackback:ping><description><![CDATA[     摘要: 今天真是有纪忉|义啊……以前试着捉了N遍的cashier今天竟然AC了,本沙茶终于掌握了q?wi)!Q!【Splay Tree及其实现?lt;1>l点记录的信息:(x)一般情况下Splay Tree是用U性存储器Q结构数l)来存储的Q可以避免在Linux下的指针异常问题。这样对于某个结点,臛_要记录以下的域:(x)|又叫关键字)、左子结点的下标、右子结点的下标、父l点下标、子?wi)?..  <a href='http://www.shnenglu.com/MatoNo1/archive/2011/06/18/148934.html'>阅读全文</a><img src ="http://www.shnenglu.com/MatoNo1/aggbug/148934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/MatoNo1/" target="_blank">Mato_No1</a> 2011-06-18 21:21 <a href="http://www.shnenglu.com/MatoNo1/archive/2011/06/18/148934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.chainou.cn" target="_blank">ھƷþþþav</a>| <a href="http://www.addlife.cn" target="_blank">ԭƷ99þþƷ66</a>| <a href="http://www.kmaxbm.cn" target="_blank">˾Ʒþۺ</a>| <a href="http://www.wsjpt.cn" target="_blank">þٸ۲AV</a>| <a href="http://www.cnmere.cn" target="_blank">޾Ʒtvþþþþþþ</a>| <a href="http://www.ldzx.sh.cn" target="_blank">seguiþùƷ</a>| <a href="http://www.xsylsh.cn" target="_blank">Ʒþþ21p</a>| <a href="http://www.gods2.cn" target="_blank"> þۺϾɫۺϾ99</a>| <a href="http://www.flycard.com.cn" target="_blank">þþþAVۿ</a>| <a href="http://www.8910wan.cn" target="_blank">2021þþƷ</a>| <a href="http://www.qxmobile.cn" target="_blank">ݺɫþþһ</a>| <a href="http://www.lyblogs.cn" target="_blank">Ʒ99þò</a>| <a href="http://www.1webproxy.cn" target="_blank">ŷҹƷþþþ</a>| <a href="http://www.c6t9.cn" target="_blank">޾þþþþAV</a>| <a href="http://www.newdalu.cn" target="_blank">պþþþþ </a>| <a href="http://www.dg-rx.cn" target="_blank">þAٸ۲ӰԺ</a>| <a href="http://www.xhc9jinmutongsm.cn" target="_blank">þۺϹapp</a>| <a href="http://www.sijishi.cn" target="_blank">ɫۺɫþû</a>| <a href="http://www.cnwowshell.cn" target="_blank">˾ƷǾþ</a>| <a href="http://www.vxpg.cn" target="_blank">ŷպƷþþþ </a>| <a href="http://www.wuxicld.cn" target="_blank">þþþø߳ۺӰԺ</a>| <a href="http://www.gljqk.cn" target="_blank">þ99һ</a>| <a href="http://www.suoguai.cn" target="_blank">97þóƷɰ</a>| <a href="http://www.ezftdhwp.cn" target="_blank">þþƷAV</a>| <a href="http://www.sskmk.cn" target="_blank">þþþþþۺϺݺۺ</a>| <a href="http://www.238000.com.cn" target="_blank">999þþùƷ</a>| <a href="http://www.114best.com.cn" target="_blank">99þĻ</a>| <a href="http://www.dl-dr.cn" target="_blank">ھƷþþþӰԺһ</a>| <a href="http://www.yrjiameng.cn" target="_blank">޾Ʒþþþȥq </a>| <a href="http://www.luben8151998.cn" target="_blank">Ʒѿþþ</a>| <a href="http://www.liess.cn" target="_blank">һһþaaۺϾƷ</a>| <a href="http://www.kdzj.net.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.uazm.cn" target="_blank">ۺһ˾þþƷ</a>| <a href="http://www.dywanjiale.cn" target="_blank">þɬۺ</a>| <a href="http://www.bekin.com.cn" target="_blank">˾ҹվھƷþþþþþþ </a>| <a href="http://www.shuwangou.cn" target="_blank">޾þһ</a>| <a href="http://www.xy-ly.com.cn" target="_blank">þù޾ƷӰԺ</a>| <a href="http://www.chenxipeng.cn" target="_blank">˾Ʒþ޸岻</a>| <a href="http://www.bb657.cn" target="_blank">þõӰ</a>| <a href="http://www.qcqxzx.cn" target="_blank">þþþӰԺŮ </a>| <a href="http://www.epfy.cn" target="_blank">ٸþþþþþþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>