1. 程式人生 > >SCOI2018遊記與題目題解

SCOI2018遊記與題目題解

說在前面

這大概是最後一場考試了吧…?

Day“-3” — Day0

4天省選前例行培訓,三天講課一天考試。貌似每年省選都有的?不過去年那一場me並沒有去,那時候自己還是一隻小蒟蒻呢…

話說為什麼要來參加這個集訓呢?me也不是很清楚…不過又有誰知道,會不會有什麼“特別”的地方呢?(16年的時候的集訓講了高斯消元和異或矩陣。很巧的是SCOI2016就考了一道線性基)
所以可能還是抱著一絲僥倖=w=,參加了這個集訓

日常並沒有什麼特別的…反正也就是上午講課,然後下午和晚上都在機房呆著。
機房總是很吵,而且頹廢的人超多!所以me和一些小夥伴們,吃完晚飯之後就直接回酒店了。

最後一天上午考了試,有兩道題是codeforces edu.場的原題,還有一道不清楚。題目還是很簡單的,T1很明顯的狀壓,T2異或最小生成樹,T3是一個有點難度的圖論題,需要動態維護最小割。
me這次考試沒有失誤,最後拿到了270,Rk忘記了,不過比較靠前。
不過本身這場考試就存在問題,編譯器版本是g++3.8,很多人的程式都莫名編譯錯誤了(比如me同學MaxMercer,

int maxn=1e5,然後因為1e5是double賦值給了int,就CE了,豈不呵呵),而且題還簡單的1B,所以其實參考價值不大

下午在UESTC附近的酒店住下了(上回是在天街附近住的),晚上出去吃了一碗豌雜麵,很久沒有嚐到這麼好吃的面了…上一次還是一年前來這裡的時候,不過那家店早就拆了,有點可惜呀=w=

晚上,教練把我們都召集起來,開了一個小短會,讓我們放平心態。
睡覺之前敲了了幾個板子(UPD:根本沒用上hhhhh)

Day1

早上6.35起的床,在酒店磨蹭了一會,同房的zyc趁著這段時間複習了一些板子,然後就下樓吃飯了。樓下的小籠包,味道還不錯。愚蠢的me用筷子夾著吃,才咬了一口就掉到桌子上,還滾了一圈,滾了一圈!幸好餡沒有撒出來qwq

擔心時間會比較緊,所以不少家長都把車開來了,然而大家一致決定走路去考場…歡樂多多
心疼家長1s

接下來就是考試了
題目壓縮包的密碼貌似是隨機字串,me還以為會是「方得始終」,因為NOIP是「不忘初心」,有點小失望

先看了下題目總覽,T1時間3000ms空間64M,感覺有點卡空間。T2時間1000ms空間128M,比較正常。T3時間3000ms空間貌似是256M,感覺也比較正常

T1

T1一眼資料結構題,1e5的一棵樹,有點權。1e5次詢問從「一個點出發的鏈上點權和」的最大值,支援單點修改點權。其實還是比較簡單的吧…詢問鏈,帶修改,能上的資料結構已經不剩幾個了…
於是me敲了一個點分+線段樹,調過小樣例之後直接就過了大樣例,然後對拍也沒有出錯,整個題搞定只用了兩個小時。me還用計算器算了下空間,感覺沒問題,然後就做下一題去了。
期望得分100

寫完T1還拉肚子了…可能是昨晚上涼著了吧

T2

回來之後開始gangT2
T2還是樹上的,1e5的一棵樹,有點權。詢問v是u的祖先,並且滿足au2+Aauav+Bav20(modp)的點對有多少個,其中A,B是給定常數,P是質數,且A,B,P不超過1e16
強行快速乘差評
me一開始以為是維護一點什麼東西,就可以算出答案的…但是這一項auav很煩,維護不了,統計資訊也存在問題…於是me果斷寫資料分治,寫了百來行。
期望得分55

UPD:關於做法,請教了同機房的大佬Doggu,現在整理後更新於此。正確性還不是很清楚,不過感覺沒有鍋
(以下都忽略v是u的祖先這個限制,反正這也不是這道題的重點)
題目就是要求符合條件的數對,然而如果有兩個未知數,顯然mmp。於是考慮先確定一個數,然後查詢另一個。
那麼先確定av,原式au2+Aavau+Bav2+pα=0,現在就是一個關於au的一元二次方程,直接套公式解方程得到au=Aav±A2av24(Bav2+pα)2,然後我們把模數p放回式子裡去,那個根號就是模意義下開根,也就是二次剩餘,化簡得au=A±A24B2av(modp)
所以如果計算出了上面那坨分數,每個au對應的av就都確定了,隨便寫點什麼統計一下就可以
如果二次剩餘無解,那麼唯一的合法情況只能是au=av=0
關於複雜度,預處理出分數,快速乘是log的,一共N個點,所以Nlog,可過

T3

T3,這題me一點思路都沒有的…題意是這樣的:給出一個M維的空間,空間中有1e5個關鍵點。你一開始在座標原點,並且你的移動方式只能是:選取一個關鍵點,並把自己對稱過去(比如三維座標下,當前在(3,4,5)這個點,關鍵點是(3,6,5),那麼就會移動到(9,8,5)這個點)。
有1e5個詢問,每次詢問給出一個點的座標,輸出是否能夠在模P意義下到達那個點(假如P=5,詢問點是(1,2,2),如果你可以到達(4,7,2),那麼視作可以到達)。模數P不超過1e8,維度不超過10
這題me瞎寫了一個exgcd+裴蜀就走了…期望得分不知道

考完後

後來考完試和小夥伴們吃飯,說起今天的考試。me突然發現me算T1空間的時候,貌似忘了一個節點要維護多個域,me可能會MLE…? 於是吃飯也不安心了…擔心me的第一題沒分…全程祈禱

下午去看分,me的T1還真的MLE了,感覺整個人都GG了。教練幫me申訴了,結果是:空間開大可以過,但是空間限制就是64M,所以0分。
所以最終呢,day1只有55分…

不過day1貌似所有人都考的不是很好(因為T1卡空間,me一個同學甚至是寫了正解都沒敢交,T2和T3全場幾乎沒人做出來),所以分差不大,那麼還是期待明天的發揮吧。

Izumihanako @ 2018.4.6 18:03

晚上,不想吃飯,去買了麵包嚼著…

因為想著T1,T2樹上資料結構,另外T2本校有同學化出了二次剩餘的式子。也就是說,day2可能還要考「圖論」、「字串」、「計算幾何」和「dp」
於是睡覺之前複習了一堆字串的知識,敲了manacher和SAM的板子,迴文自動機也看了看,算是對day2的準備吧(UPD:還是沒用上,服氣)

Day2

昨天晚上十二點過才睡的,設定了一個六點半的鬧鈴

然而早上天還沒亮的時候,me突然醒了,一看手機才6點鐘
躺下繼續睡,然而睡不著,到了6點半鬧鈴居然沒有響只有震動…?幸好me是清醒的,感覺上天都在眷顧me

然後早上還是去了那一家包子鋪吃早餐。然而今天早上換蠢蠢的zyc把包子弄掉了hhhhh
好啦……然後仍然是走路去的UESTC
中間的等待時間就不寫了,反正也就那樣子…還是說一下考試

慣例的看題目目錄,貌似沒有什麼亮點,day2的空間開的比較大(比起day1),應該不用卡空間。然後看題。

T1

剛看到這個T1的時候,me:又tm的是資料結構???黑人問號臉.jpg
題意是這樣的,給出一個1e5的序列(數字在整形範圍內),然後1e5個詢問。每次詢問給出L,R,u,表示在L到R中任意選取連續的三個數字,使這三個數字加上u之後,整個序列的絕對值之和最大(並不真正的加,只是詢問)。帶單點修改。保證RL3

最終的答案其實就是 原序列abs和 + abs變化量。於是現在就是要最大化abs的變化量
做法其實比較簡單(如果能想得到的話)。
先考慮單個數字。假設這個數字是a,那麼|a|變化量和加的數字u大概是這樣的關係:
這裡寫圖片描述 (如果a是個正數的話,負數也差不多)然後把連續三個數字的變化量之和,就是三個這樣的影象加起來,畫出來會發現整個影象有四段:第一段斜率-3,第二段斜率-1,第三段斜率1,第四段斜率3。我們可以把四個線段當作四條直線,那麼對於每次詢問的u,這個三元組的答案就是四條直線在u位置處的最大值。
於是寫四棵線段樹分別維護最大值就好了。寫起來可能有點點麻煩……另外分塊貌似只有70分?

這道題呢,其實和[APIO2016]煙火表演有那麼一點相似,都是維護影象找最優位置。在考場上me只發現了「貢獻分段」,並沒有畫個圖出來看看,也就沒有想到後面的東西了…
所以這玩意er,me