1. 程式人生 > >GDOI2018 涼涼記

GDOI2018 涼涼記

Day0

今年GDOI在中山市一中,也就是主場了(從我家走路過去五分鐘)
不知道為什麼,晚上很困,九點半就睡著了?!

Day1

早上大概七點起床,所以晚上是睡了多久……

試機時間有半個鍾,八點半正式開始
試機的時候打了個exgcd,FFT之類的

題目

T1

給定一個數組,將這個陣列劃分成若干段,每段元素之和相等,求最多劃多少段
n<=105,a[i]<=106,1<=a[i]<=10

T2

你有個密碼鎖,長度為n,每個數字為0~m,初始時第i個數字為a[i],最終密碼為全0。每次操作可以讓一個區間加1或-1(在模m意義下)
問最少需要多少次操作使得得到正確密碼

T3

一棵樹,每個節點上有重量為ai的蘋果
每天按順序執行以下操作:
可能有詢問某個點和它子樹內的蘋果重量和,詢問數為q
隨後會有一個人把根節點(1)上的蘋果移走
然後所有節點上的蘋果都會移到父親的位置
最後可能會有某一個點多出一個重量為w的蘋果,這種運算元為m
詢問形如(t,x)表示在第t天詢問子樹x
操作形如(t,x,w)表示在第t天讓點x增加w
所有數字範圍<=105

T4

一個競賽圖,有若干條不想交的路徑已經知道邊的方向,其他等概率隨機,問強連通分量的期望個數
n<=105

做題

看完第一題後,發現如果直接列舉總和的約數然後直接判斷是否可行的話,複雜度應該是log級別的,而且很容易break掉,應該能過,下一題。
第二題一開始想的貪心就是偏向上的往上轉,偏向下的往下轉,然後我看到了第二個樣例。
貪心就掛了,想了十多分鐘,什麼區間DP和各種各樣的DP,可撤銷貪心都想過了,好像都不行。
第三題第一眼一看哇線段樹裸題,然後想著固定一個時間點刪除什麼的,覺得可切,細想了一下沒有問題。
第四題一看做過??然而資料大了一檔,應該是NTT,但是之前那道原題沒有改出來,有點虧。
看完大概九點二十,十分鐘碼完第一題,感覺沒法拍,肉眼看了幾遍,出了大資料,然後發現隨機的大資料要不1要不n。
想辦法弄出了一些有值的大樣例,弄到十點。
第三題打暴力因為有一點點細節10分鐘,大樣例直接過。
然後打線段樹,打完才發現有問題,我只考慮了從根節點刪除的,其他點統計就會出問題。
然後方了。方了十幾分鍾, 到十一點才去看第二題還有沒有方法。
第二題看了好久發現沒救,重新看了看第三題,發現好像二維資料結構就能做,但是還是先打了詢問x=1的部分分。
第二題去打了個暴力,暴力還中途刪改了好多遍,反正是拖到了十一點半左右才徹底不管第二題。
接著猶豫是打二維資料結構還是打CDQ分治。
因為已經打了線段樹,另一個程式已經打了樹狀陣列,合起來不麻煩,十分鐘就打完了。
樣例一次過,大樣例一次過。
然後拍,拍了十分鐘什麼都沒拍出來。
測極限,調整一下陣列大小,也沒問題。
繼續拍,拍到結束。
又去想第二題,還是無果。
第四題打了個random。

中午

出門後討論了一下,很多人是220,就是和我一樣的分數,也有好幾個300~350,把第四題切掉的。

時間安排不合理,吃完飯後剩一個半小時講課,回去睡覺略不夠時間,呆坐著要等好久。
於是出去轉圈圈。
Alan說他試機的時候打了NTT,剛好用到,賺。

下午

三點開始講課。
第一題出題人直接說,300多人有得分,260多個AC。
區分度=0。
第二題出題人請samjia講他的做法,因為他的得分差不多是n^2複雜度的分數,出題人說沒有想到這檔分怎麼搞。
samjia被點到的時候,出題人說我點的人通常分很高。samjia說那意思就是沒有AC了。
samjia就把正解講掉了。
出題人隨後複述了一遍正解:差分後就是一個位置+1,一個位置-1。貪心的想,靠近哪邊就往哪邊走,然後排個序什麼的。
第三題放出來AC人數只有32
突然方,怎麼會這麼少。
出題人給出的是CDQ分治做法。
第四題沒有講太多廢話。
第四題弄出多項式然後NTT就行了。

發成績,JZ是不是因為人太多被故意放到了後面。
100+5+30+0
???
第三題掛了?
果斷複評。
複評那裡werkeytom和我說第三題他2e7的陣列切掉沒問題。
意思是我陣列開小了??
複評的時候我把陣列那裡再開大一倍,然後就切了。
涼~~~

總結

第一天最大的失誤是第三題,一byte差了70分。
第二題序列上的區間加減沒有想到差分,如果想到差分就應該很容易出解。這個還是歸咎於平時做題數量較少,套路沒有發現。
第四題是原題,但是當時都沒有去改,再加上多項式方面實在太差,使得原本是原題變成了一個劣勢。
後來發現這個東西沒有想象中的那麼難,如果當時去仔細學一下肯定學得出來。

晚上

晚上開會,老師進行“二試考前疏導”,就是勸我不要棄療。
最後老師讓一人說一句話
samjia:“一定要記得是十二點半結束,我以為十二點結束,十一點半就開始檢查”
然後差點AK。
Alan:“我也是”
然後375。

day2前先立個flag,晚上背一下SAM板子。

Day2

題目

T1

有n個點,每個點有一個a[i]
有m條邊,連線x和y,權值為i=1a[x]j=1b[x][gcd(i,j)=1]
求1到n的最短路
n<=105a[i]<=105(這個也是大概)

T2

給一個滑稽圖,求所有的匯出子圖中的邊的數量的k次方的和。
滑稽圖:邊數比點數還少的聯通圖。
k<=10,n<=105

T3

一排木板,每個點有兩個值x和h,表示位置和高度。
兩個木板可以裝的水的數量為|x1x2|min(h1,h2)
兩個操作:
詢問一個區間內的木板中最多可以裝多少水
修改一個木板兩個值中的一個
n,m<=105(也是大概,資料範圍我全忘了)

T4

一張圖,點數為n,兩個操作,運算元為m。
詢問從一個點開始走一個最短的環回到原點的長度。
禁用/啟用某個點。
n,m<=400

做題

一上來看到第一題兩個sigma+gcd
直接反演,好像可以過
第二題k等於1的情況和點數較少的暴力一眼,但是其他的一下沒有想到。
第三題也是隻會暴力。
第四題看完什麼想法都沒有。
感覺第二題可做一點,仔細去想了第二題
然而發現k大於2的時候還是不會做。
第四題突然想到可以列舉兩個出邊,然後求個最短路。
先把第一題碼了,大概到十點鐘。
然後去碼第四題,很快就碼出來了。
第三題我一直認為他x是無序的,一直在考慮三維資料結構。
一直想到十一點多,什麼都沒想到。
只好把第二題和第三題的暴力打了。
出來就知道涼透了。一問所有人個個200+到300

講課

第一題就是反演,沒什麼說的。
第二題k>2的部分可以用找規律的方法,也可以DP,k才10,nk^2的複雜度不難。
第三題我一看螢幕上寫的x遞增一臉懵逼,然後出題人說到資料隨機,看錯題了?
因為隨機,暴力就能過。
第四題發現我的暴力還是太暴力,可以只列舉一個出邊就足夠了的。

複評

第一題爆炸,TLE60。
不知道哪裡有人給我了一張表,前70名進Day3
然後我71名?!
兩天一共少了200分以上。
於是就去複評了。
一開始老師拿我的程式跑要5s,就在他讀程式的時候他電腦沒電了。他去拿充電器,我瞄了一眼:5代i5U
他沒找到充電器,於是我就去左老師那裡。
他隨便測了一個點,要1020ms
他說很接近喔。
然後judge了一下,就980ms過去了……
後面一個老師說這怎麼算,左老師說當然是加分啦。
左老師的電腦是Macpro

第四題掛掉20分,複評那裡看到無解輸出-1,看錯題+1
其他暴力也都少了很多分。

總結

失敗在於忘記了DP這個東西,或者說第二題一直往數論方向想(其實數論夠強也能出來),但沒有想dp。
第三題看錯題直接導致整題丟100分。
兩題看錯題外加前一天空間算錯導致失分太多。
圖論比較差,知道它是Floyd但沒有想出來。

晚上

(這裡說明了我忘記題目的原因)
先和ljj去逛了一圈,晚上八點前趕回酒店,群上說要開會,但沒說幾點。
然後等到了酒店,群上說九點半開始開會。
九點五十分,symbol說他出發了。
十點十分,開始開會。
開到十一點。
比我前兩天睡覺時間晚了一個小時。

Day3

所以名單上有71個人多出來的那個71號就是我。

題目

T1

有n個人,每個人有三個值,同一個屬性所有人兩兩不同。
當一個人有大於等於兩個值大於另一個人時,就能獲勝。
選兩個人比賽,進行n-1場,問最終哪些人有可能活下來。
n<=106

T2

一棵樹,點n的父親為n/2(下去整),邊的權值為an2+bn+c
一次操作會使一個子樹消失。
每次操作後求哪個點使得所有點到這個點距離和最小
n<=1018,m<=105

T3

有一個有向圖。點數為V。
m個人,都要從1走到V。
有一個字串,長度為n。
如果兩個人的路徑有邊相交,就要產生一個不爽值。
兩個人的不爽值為兩個人名字的最長公共字首的長度。
每個人的名字是那個字串的一個子串。
m,n<=105V<=100

T4

有一個黑白的網格圖,黑點可能圍出若干個島,每個島的人數為圍住的白點數量。
所有島通過黑格連成一棵樹的情況。
黑點數<=106(大概是這個?)

做題

第一題一看,不就是連邊然後一個環上的就不行嗎?
然而邊是n^2級別的。
接著發現一個環上不行,而是tarjan縮環後出度為0的點。
但是邊還是n^2級別的。
算了,60分也不少了。
看第二題就會n^2,想了好久怎麼詢問log然而並不會。
(後來發現其實50分的n<=10^6很簡單)
第三題看完後想應該分成兩個步驟,一個是求出有多少條不想交的路徑,一個是二分答案然後判斷是否可行。
很高興試機打的SAM好像用得上了。
然而發現第一個子問題都不會。
第四題原以為是資料結構題的(規律),然而今年不是。
那豈不是沒有毒瘤資料結構題?
但是好像也很不好做。看完就直接棄掉了。
第一遍看題用了一個小時。
回去看第一題,還是不會怎麼減少邊數。
第二題也想了好久,也不會。
第三題還是沒有想到。往nlog複雜度上去想,什麼都沒有。
第二次也想了有一個小時。
然後去打暴力,60+20。
打完還剩一個小時,又什麼都沒做。

出來後有人說第一題線段樹優化連邊,第三題網路流。
我先懵了一分鐘,然後大呼涼涼。

講題

第一題就是線段樹優化連邊,第三題就是網路流。SAM也不用,雜湊就能過。
第三題看到100也沒想網路流。
第二題好像是有性質可以直接從根節點走到對應的點,刪除也是。
那麼就是log了,100分細節很麻煩,50分是水的。
第四題werkeytom成功弄到90分,不知道哪裡掛了。
反正就是模擬暴力,考的和資料結構一樣,也是程式碼實現。
成績是60+0。
第二題不知道為什麼WA了,沒去複評(太困了)。
回家後直接睡了兩個小時。

總結

因為前兩天的爆炸,第三天心態很不好。
第一題的優化連邊是之前做過的,而且也不太難。
網路流的模型也沒有看出來,這個應該是因為比較長時間沒有做網路流,這個要在備考前注意。
字串學SAM學傻,雜湊也忘記了。
第二題20分到50分幾乎是完全一樣的,……
第四題放棄算是正確?
反正還是自己太弱,到處找理由。

晚上

繼續困,繼續睡覺。

Day4

看名單我好想沒有二等。
然後我是三等的第一名?
被之前某人說的某句話說中了五年。
被派去領銅牌,今年好像整個學校就這麼一塊銅牌。領下來就給haowarli了。

中午吃飯是十點半開始,於是平均吃飯時間維持在了正常的時間。

滾回去上文化課。