HNOI2018滾粗記
標簽: 游記
Day 0
上午在家里搞頹,下午來學校干了點正事,把自己已經忘光了的數論補了補,順便還學了一下拉格朗日差值,晚上在家補總結。
Day 1
很早就到了學校,像以前比賽一樣在那里吃早餐。
到了機房之后狂敲配置模板,表示很羡慕用vim的同學。
先看T1,感覺是一道要靠性質的題目?
先寫了一個30分的DP.
后面寫完暴力回來想的時候發現從后往前推好像有些什么不得了的性質。
於是我就想一步一步算,要么就相同,要么就是子集之類的。
結果發現這兩種位運算不滿足結合律,所以就沒往這方面想了,然后又想的比較偏,什么meet in the middle ,FWT合並之類的都出來了。
再看T2,第一眼感覺與ZJOI day1 T2的題目形式有點像啊,都是要支持修改維護一個最優解。
所以我打完暴力就開始猜結論,然后隨便猜了一下,好像是\(min\{ max\{t_{st+i}+n-i \} \},st \in [1,n]\),反正就是先等一會,然后再轉一圈。
然后發現可以\(O(n)\)單調隊列一下就40分了。
然后我又發現數據范圍只有\(10^5\),但是時限2s,還開O2,所以我覺得這題肯定是分塊,剛好之前學校考過一道分塊加單調隊列的題,但是想了很久也沒有思路(還不如在T3上卡卡常)
T3,30分就是一個環套樹DP。
當我正准備打的時候,我突然靈(lan)光(de)一(yao)閃(si),突然想到可以用不考慮這條邊的總方案數-強制選這條邊的方案數。仔細一想,突然發現可以容斥,那么復雜度就是\(O(2^{m-n+1}×n)\)的?這復雜度感覺是很對的了。
然而等我打完之后發現極限數據根本跑不出來,連80pts的都要跑4s。
於是我決定卡常。
首先發現這個DP看起來很萌,完全可以改成從底向上合並,那么把深度拿出來排序,只需要一個for循環即可。
然后容斥強行限制了某些點必須選,所以可以判一想如果為0就不管,因為取模的常數還是特別大的。
然后,由於你已經把遞歸都改成了循環,所以一定要加register。
當這些優化都加上之后,你會發現跑80pts大約要1.05s。
然后就GG了。
期望分數\(30+40+70=140\)
主要是感覺T2有些思路,然后就去玩T2了。
下午回去了,在家里搞頹。
看到成績發現 \(10+40+75=125\).
T1 fst了。
看了一下,發現我狀壓的時候寫的是\((1<< n)-1\)。
其他分還算正常,T3卡常所以多過了5pts。
給予T1的時間實在太少了,就只有打暴力的時間,而且我最后對拍的時候,n,m都是相同的,當然拍不出錯。
明天還是好好打暴力,爭取把暴力分都拿到。
Day2
T1,60分簡直就是送的,所以根本沒有仔細想。
T2,40分很容易想,然后我觀察了一下,發現就是a[i]的選完了之后i才能選,所以這就構成了一個拓撲結構,更准確的來說,構成了一棵以0為根的樹。然后直接貪心顯然是錯的。
所以就xjb亂搞,把兩棵子樹按照歸並排序的那套理論合並,結果樣例都沒過。
T3,隨便寫了個20分就棄療了。
期望分數 \(60+40+20=120\)
大家應該都是這個分數吧,結果一出去。
T3不是傻逼題嗎,為什么一定要記子樹的狀態,tm不記父親的狀態啊。
T2是雅禮集訓原題?而且也是貪心合並?
T1只需要反過來暴力就可以AC?
涼涼。
不管不管題出的怎么樣,不管有多少理由,都改變不了自己分低的事實。
不過考試既然已經過去,那么分數就不是最重要的的了。
今年還只是初三,等到下半年,也就高一了。
希望能盡快地成長吧。