SCOI2018遊記與題目題解
說在前面
這大概是最後一場考試了吧…?
Day“-3” — Day0
4天省選前例行培訓,三天講課一天考試。貌似每年省選都有的?不過去年那一場me並沒有去,那時候自己還是一隻小蒟蒻呢…
話說為什麼要來參加這個集訓呢?me也不是很清楚…不過又有誰知道,會不會有什麼“特別”的地方呢?(16年的時候的集訓講了高斯消元和異或矩陣。很巧的是SCOI2016就考了一道線性基)
所以可能還是抱著一絲僥倖=w=,參加了這個集訓
日常並沒有什麼特別的…反正也就是上午講課,然後下午和晚上都在機房呆著。
機房總是很吵,而且頹廢的人超多!所以me和一些小夥伴們,吃完晚飯之後就直接回酒店了。
最後一天上午考了試,有兩道題是codeforces edu.場的原題,還有一道不清楚。題目還是很簡單的,T1很明顯的狀壓,T2異或最小生成樹,T3是一個有點難度的圖論題,需要動態維護最小割。
me這次考試沒有失誤,最後拿到了270,Rk忘記了,不過比較靠前。
不過本身這場考試就存在問題,編譯器版本是g++3.8,很多人的程式都莫名編譯錯誤了(比如me同學MaxMercer,
下午在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的祖先,並且滿足的點對有多少個,其中A,B是給定常數,P是質數,且A,B,P不超過。
強行快速乘差評
me一開始以為是維護一點什麼東西,就可以算出答案的…但是這一項很煩,維護不了,統計資訊也存在問題…於是me果斷寫資料分治,寫了百來行。
期望得分55
UPD:關於做法,請教了同機房的大佬Doggu,現在整理後更新於此。正確性還不是很清楚,不過感覺沒有鍋
(以下都忽略v是u的祖先這個限制,反正這也不是這道題的重點)
題目就是要求符合條件的數對,然而如果有兩個未知數,顯然mmp。於是考慮先確定一個數,然後查詢另一個。
那麼先確定,原式,現在就是一個關於的一元二次方程,直接套公式解方程得到,然後我們把模數p放回式子裡去,那個根號就是模意義下開根,也就是二次剩餘,化簡得。
所以如果計算出了上面那坨分數,每個對應的就都確定了,隨便寫點什麼統計一下就可以
如果二次剩餘無解,那麼唯一的合法情況只能是
關於複雜度,預處理出分數,快速乘是log的,一共N個點,所以,可過
T3
T3,這題me一點思路都沒有的…題意是這樣的:給出一個M維的空間,空間中有1e5個關鍵點。你一開始在座標原點,並且你的移動方式只能是:選取一個關鍵點,並把自己對稱過去(比如三維座標下,當前在這個點,關鍵點是,那麼就會移動到這個點)。
有1e5個詢問,每次詢問給出一個點的座標,輸出是否能夠在模意義下到達那個點(假如P=5,詢問點是,如果你可以到達,那麼視作可以到達)。模數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之後,整個序列的絕對值之和最大(並不真正的加,只是詢問)。帶單點修改。保證。
最終的答案其實就是 原序列abs和 + abs變化量。於是現在就是要最大化abs的變化量
做法其實比較簡單(如果能想得到的話)。
先考慮單個數字。假設這個數字是a,那麼|a|變化量和加的數字u大概是這樣的關係:
(如果a是個正數的話,負數也差不多)然後把連續三個數字的變化量之和,就是三個這樣的影象加起來,畫出來會發現整個影象有四段:第一段斜率-3,第二段斜率-1,第三段斜率1,第四段斜率3。我們可以把四個線段當作四條直線,那麼對於每次詢問的u,這個三元組的答案就是四條直線在u位置處的最大值。
於是寫四棵線段樹分別維護最大值就好了。寫起來可能有點點麻煩……另外分塊貌似只有70分?
這道題呢,其實和[APIO2016]煙火表演有那麼一點相似,都是維護影象找最優位置。在考場上me只發現了「貢獻分段」,並沒有畫個圖出來看看,也就沒有想到後面的東西了…
所以這玩意er,me