Posted on 2012-01-22 23:08
Mato_No1 閱讀(290)
評(píng)論(0) 編輯 收藏 引用
所謂數(shù)據(jù)結(jié)構(gòu)詢(xún)問(wèn)類(lèi)題,就是那種一大堆操作+詢(xún)問(wèn)的題(典型的有NOI2005 sequence、NOI2007 necklace等)。
對(duì)于這種題常用數(shù)據(jù)結(jié)構(gòu)有:線段樹(shù)(樹(shù)狀數(shù)組可以看成線段樹(shù)的簡(jiǎn)化版本)、Segplaytree、各種塊狀結(jié)構(gòu),以及線段樹(shù)在樹(shù)結(jié)構(gòu)上的應(yīng)用——樹(shù)鏈剖分、Segplaytree在樹(shù)結(jié)構(gòu)上的應(yīng)用——Link-cut Tree實(shí)現(xiàn)動(dòng)態(tài)樹(shù);
解題技巧:
(1)看到題以后,首先搞清楚題目是基于什么結(jié)構(gòu)的——線性結(jié)構(gòu)、樹(shù)形結(jié)構(gòu)、甚至可能還有圖結(jié)構(gòu)(比如SCOI2011的那題,對(duì)于圖結(jié)構(gòu)一般不能直接處理,而是采用三種辦法搞定:一是有向圖縮環(huán)轉(zhuǎn)化為有向樹(shù)、二是求生成樹(shù)、三是遍歷)
(2)在基本的數(shù)據(jù)結(jié)構(gòu)(上面列出來(lái)的那些)當(dāng)中看看有木有可以支持所有的操作的(其實(shí),如果遇到一種基本數(shù)據(jù)結(jié)構(gòu)就能支持題目中所有的操作,那這題就太水了,一般像AH這樣的弱省全場(chǎng)30人以上AC木有問(wèn)題,因此要特別小心),如果有就直接用這種數(shù)據(jù)結(jié)構(gòu)搞了;
(3)如果木有,就要想到數(shù)據(jù)結(jié)構(gòu)的聯(lián)合或者是模型轉(zhuǎn)化;
(4)然后就是寫(xiě)代碼了,寫(xiě)的時(shí)候要注意這種數(shù)據(jù)結(jié)構(gòu)模板中的易疵點(diǎn);
(5)調(diào)試的時(shí)候,先檢查樣例和不超過(guò)5組的小數(shù)據(jù),緊接著讀一遍代碼,觀察那些易疵點(diǎn),然后立刻開(kāi)始對(duì)拍,節(jié)省時(shí)間;
(6)對(duì)拍的程序是很容易寫(xiě)的;
(7)造數(shù)據(jù)的時(shí)候可以造只有一種操作的,專(zhuān)門(mén)檢查這種操作有木有問(wèn)題;
(8)一定要設(shè)法考慮到并檢查各種特殊情況。