前幾次集訓都沒有記錄每天的點滴……感覺缺失了很多反思的機會。
這次就從今天開始吧!不能懈怠,穩步前進!
2017/10/1
今天上午進行了集訓的第一次考試……
但是這次考試似乎是近幾次我考得最渣的一次?
今天考試第一題是高精度+數學,第二題是圖論計數大分類討論,第三題是狀壓的樹歸
第一題看到之后自信的以為可以做出來,結果一直打到了還剩下半個多小時才打完.
還是too young too simple......今天這真的是致命的失誤,后面再怎么考試也不能孤注一擲了
以及今天cdq基本上做完了(雖然剩下Cash一個大坑),如果明天有時間把它做掉好了.
cdq和整體二分等時間分治算法很是精妙......明天再去理解一下整體二分
*坑點:后綴數組的基數排序cnt數組大小也要開成串長
*新科技:手打隊列把端點變量變成unsigned short實現循環隊列,當然也可以取模
*新科技:
樹狀數組求區間和:
移項整理a[1]+a[2]+...+a[n]=n * (c[1]+c[2]+...+c[n]) - (0*c[1]+1*c[2]+...+(n-1)*c[n])
所以額外加一個數組記錄(i-1)*val[i],答案是i*bit1[i]-bit2[i]差分
2017/10/3
昨天晚上考試了沒來得及更新233
早上先把整體二分的題打了一道...
整體二分簡單來說,就是通過
"每次處理的長度是待處理序列而不是整個序列"
的處理過程來優化復雜度(尤其體現在不能memset)
昨天考了兩場,上午一場200,晚上300(人生第一次AK我會告訴你嘛)
上午的T1是瞎j貪心,T2線段樹亂搞,T3....又是打表->找規律->結論->邊界處理的數學題
....這種題一直很棘手啊....以后碰到這種題先要快速把表打出來,還要培養聯想力啊233
晚上T1簡單計數題,加上一點邊界處理就行.這種題要嚴謹的想一想再動手打.....
其實一開始我急了,上來直接扔上去那個式子結果自己測1e18 1e18炸出了負數
后來發現走一步就得mod一下.....
T2是個挺裸的樹歸,不過似乎我打丑了結果最慢23333
T3是......看了一會發現是平衡樹?平衡樹?NOIP模擬考平衡樹?
但是還是扔了個無旋Treap上去,然后打並查集維護了下....
結果時限2s跑了1968ms.考完試一看耗時嚇死了.......
但是其實也有做的不好的地方.....比如"悶聲發大財"這句話我就做的不是很好
考完試的確很興奮....但是沒有注意到其他人的感受
平時我是在避免自己變成這樣但是...還是自己的問題,以后要注意了
然后在雜題專題里面水題...發現自己把水題一下午做完了剩下一堆好題
今天上午就開始肝這些題了.....今天應該還會考試,繼續加油咯
*做題經驗:
好像什么時候貪心都很受歡迎,但是貪心的證明似乎需要一些套路
如果有一個貪心的思路or苗頭,可以這樣引導自己的思路:
如果這樣貪會怎么樣,如果不會又怎么樣?
如果兩種情況都可以有理有據的證明,那么我們可以考慮貪心試試了.
2017/10/4&2017/10/5
久違的假期......4號上午考完試之后就進入了放假狀態233
滿血復活!進入集訓狀態!
晚上又是如期而至的考試.
*坑點:n,m>p時計算組合數取模(C(n,m)%p)必須用lucas來算,階乘大於p的會變成0
*做題思路:區間最優化問題多想想單調隊列優化,區間統計問題多想想莫隊
2017/10/6
今天老師突然拿了一套省選集訓模擬題給我們做2333
T1是個圖論,考場上想歪了...其實特別很像Dinic找分層圖的過程
T2....原題題解是17頁英文pdf ....XYZdalao成功杜教篩淼之%%%
T3是道線段樹,用法很奇特...用線段樹維護從某個點開始的上升序列長度.
思路很棒....這道題的思路給人一種很清晰的推理演繹的感覺.
"如果....那么....;如果...那么..."(怎么那么像語文論述文2333)
可以用這種方式來開導思路!
2017/10/7
早起改題A了昨天T3...一開始帶注釋打了250行蠢死我了.....
%WQdalao 100行AC內存時間最快
下午繼續考試...考的是昨天省選集訓模擬題的第二套...
這次T1是個小小的模擬,T2是一道非常好的DP,%WQdalao考場想出正解之一,不過被計算方法卡精了233
精度問題很大程度上受計算次數的影響,如果乘除運算過多,精度爆炸的風險會大大增加.
雖然自己沒有被卡精.....不過以后(尤其是做計算幾何的時候)涉及到精度的時候一定要注意運算次數的因素
當然有的時候算法不同精度風險也不同...需要斟酌
T3本以為是數據結構的巧妙應用,結果正解是用了一個比較奇特的近似暴力想法....
由於暴力會T,但是不暴力還不好做,所以用類似樹剖的想法,
我們把操作單元分為輕重兩種,並且用不同的方法來維護
准確的說,其實有一點類似哈夫曼樹的貪心過程,
使用次數多/處理代價大的我們用方便的方法處理,使用次數少/處理代價小的我們暴力處理
真是開腦洞了.....以后遇見有類似特征的題目的時候可以往這個方向想一想
2017/10/8
考試日常爆炸(rank20我要上天了)
T1是個貪心亂搞,貪心想出來了,代碼實現跪在了STL的使用上,炸了80分:
對set調用algorithm庫里的upper_bound,而沒有調set自己的upper_bound,然后手動把O(logn)變成O(n)......
T2的正解十分類似前天打的那道線段樹....都需要一個log的統計查詢(似乎線段樹這樣log統計是一個套路?)
可能和套路有一定關系,但是正解推導的過程是在"抓本質",也就是說,考慮完成一段操作序列之后得到的等效結果是什么
這樣我們就可以利用這個本質來解決問題.以后分析問題的時候要盡量模仿類似的想法
T3由於數據問題用char讀入+O3可過然而比賽並不開O3,這個做法只有30分
正解並沒有想出來...和WQdalao一起去搞正解去...
改T3之前反思一下....
每次考試不管考的是否盡人意,總感覺自己完全沒有頭緒,就是在瞎打...
思路一直在徘徊和繞圈子,找不到突破口...
這樣的我只能解決自己見過的題型,如果沒見過根本無法創新出新思路....我需要改變啊....
*做題策略:
不要抓住表面現象(以及有趣的題面)不放,真正動筆去把式子寫出來,
多考慮移項,以及把有相同有關變量的量放在一起
*知識點:有向圖最小鏈覆蓋:轉化二分圖求最大匹配,答案為n-cnt
2017/10/9&2017/10/10
這兩天沉迷大模擬無法自拔2333
兩天整過了豬國殺和殺螞蟻...真的是鍛煉碼力和思維嚴謹性啊.....必須要思考的很周全才行.
*坑點:!的優先級高於%(!a%b)
*坑點:不是void的函數返回值一定要覆蓋所有情況,Linux下沒有具體規定的返回值不一定是什么
*做題經驗:
思路不通了把所有已知條件再列出來一邊,寫清變量之間的關系和限制,並且針對每一個條件寫出解決方案和打法
感覺凌亂的代碼段就刪掉重打一遍,用的總時間一定會比死調下去少
關於這兩天的考試,做的是hzwer的模擬賽...明顯比以前的題可做並且質量很高...
*做題經驗:如果有一個式子同時有幾個變量,我們可以考慮枚舉其中幾個,僅讓一個作為變量來簡化問題
這兩天我的暴力分都可以拿足,並且能拿多足拿多足..但是很多時候僅限於暴力...
思考人生.jpg
晚飯之前重新分了機房......自己的地方沒有動,還是和wqlao坐在一起
現在總榜上到了rk2...然而依然被wqlao甩了300多分...
但是現在我還是極其沒底...能否拿分完全根據題的難易程度...
稍微難一點就做不出來了...
還是前兩天那個問題,碰到題我的腦袋就在題目的外殼上打轉,完全找不到切入點.
如果有可能的話和教練或者dg交流一下...
做着做着題突然碰到一個線性基??
留個鏈接http://www.cnblogs.com/ljh2000-jump/p/5869991.html
https://blog.sengxian.com/algorithms/linear-basis
線性基的題型相對比較固定,看到下面的類型基本上都是線性基了:
- 最大異或和
- 第k大異或和/異或和是第幾大
- 求所有異或值的和
線性基中的題目中還用到一個技巧:
- 任意一條1到n的路徑的異或和,都可以由任意一條1到n路徑的異或和與圖中的一些環的異或和來組合得到。
這便是線性基的全部東西了。
2017/10/11
今天上午考試似乎沒有炸?
280/300 rank3 還好...T2最后3分鍾把正解改過來了
T3是一個玄學的堆優化DP...這道題又啟發了我一點,如果一個變量不好處理,
我們可以把它拆開(這道題把取max里面的兩個變量拆開,把式子展開),
得到一些定值/單調的值,從而方便我們解題
然后下午把Kd_Tree的坑開了個頭...這似乎是一個用處很多的數據結構
據Wqdalao說在工程上可以用來盜圖圖像匹配?繼續理解板子中.....
又到了晚上...做一點反思
剛剛和dg聊了聊天,dg給了一些建議,比如(摻雜個人YY因素):
遇到有風險的難題,先把能拿完的分拿完;每一道題不管多么想要打正解,都要把顯然的暴力打出來。
面對實在想不出來但是感覺不會太難的題要適時放棄
在沒有其他做法時再采取風險做法
看到題之后"尋找特征",一道好題應該有一些部分分,並且部分分可以引導選手打出正解
我還記得之前暑假里來講課的學長說過:
暴力往往沒有利用題目中的一些條件,要想一想怎么用題目中給的條件優化算法
值得注意...明天考試的時候多這樣想想,試一試看看效果.
還有,我似乎應該逐漸轉回比賽配置了再見sublime233,那也明天開始吧!
2017/10/12
早上到機房把昨天晚上的KD-Tree改過...可能我和數據結構八字不合
然后就開始考試了.今天考了兩場,上午一場..來自一位沖刺國家隊的dalao的一套"有思維難度題目"
什么叫思維難度呢?全場最高分65生魚憂患死魚安樂
不過讓人還稍微欣慰一點的是第一題看出了一部分的正解...
不得不說自己的思維能力還是...不夠,不過感覺那種繞圈子的感覺減輕一點了.
下午又考了一場,rank3 265/300,這才是聯賽題目嘛...不過后來得知T1T3都是省選題233
T1數學,T2數據結構,T3圖論,
上來看T1懵x,T2又懵x,看T3發現裸Tarjan亂搞...
然后開始打T3,半個小時左右調完,繼續對着T1發呆
過了會發現還是不會,回去又看一遍T3....發現T3看錯題了....
8個格子被我看成曼哈頓距離小於等於8了.......
當時一臉zz....慌死了
然后趕緊改趕緊改;不過還好不是很難改...15min改出來了,最后還好A了:)
慶幸中:1.看錯題發現了2.還改過來了3.這不是正式比賽
看錯題這種事...每一年都有無數人犯過這種刻骨銘心的錯誤...
我可不希望自己因為這種事情掛掉任何一道題...嚴謹認真啊嚴謹認真
改的差不多了回去T1,最后對着楊輝三角的表猜了個結論,和暴力遞推拍了拍就交了,結果猜對了.
事后發現T1的模型轉化一下變成了之前考過的一道原題...
令人窒息的是我都沒有看出來這個事實...一直在向容斥的方向瞎想
是我的推理能力太弱了嗎...考試的時候完全沒有正確的思路,一點頭緒都沒有
教練說要不斷練習不斷打題不斷找感覺,每個人都會有自己的風格...
但是我覺得現在我還沒有自己的感覺和風格...唯一能很好的做到的就是打暴力騙分..
不過路是靠人走出來的...慢慢來吧,總有一天我會變強!
*坑點:數組越界可能會對其他某一位置的內存產生影響,一定要把數組的大小計算好,尤其是考試的時候!
2017/10/13
今天依舊是考了兩場.....
上午rank15 200/300,下午rank1(其實並列了一堆人)300/300
上午T1是個很簡單的二分,不過我少特判了一種情況掛了20分...
這20分給我一個小教訓:
不管打什么題,能過的暴力&特判&部分分在打出正解之后不要刪掉(當然前提是你得打對啦)
這樣萬一正解出錯,那些暴力和特判還能給你一些部分分,不至於掛的太慘
T2是個水水的單調棧,亂搞一下就行了,T3是組合數學...
組合數學....喜聞樂見的爆炸,只拿了20分部分分,然而結論特別簡單..
不只是組合數學....只要是數學我就基本上GG了,能打多少分完全是未知數...
個人感覺,我還是"抓本質"的能力不夠...考試的時候推的式子只對了一半...
如果能把數學模型清晰的建立出來的話,那道題也不至於只拿20分暴力部分分
考完試和xyz要了一點題...等把手頭上的KD_Tree做完去強化一下數學...
下午的題...沒啥好說的,T1lucas板子,T3線段樹板子,T2是個樹hash.....
樹hash我沒學過啊???
稽急中生智自己YY一個板子...還好YY對了,最后拿到了分:)
(要是這樣我可以把之前幾道樹hash的省選題做一做?)
今天考試..整體上說還可以吧,就是上午的T3分太少了,有點遺憾.
晚上再做做KD_Tree收個尾....
2017/10/14
昨天晚上吃完飯突然被塞了一套liu_runda雜題...
致郁向題目.......我的天啊.....
目前攻略進度2/10
做掉的第一道題是個組合數學,只不過要打個高精度....結果高精度打錯了調了15min23333
自己推了個O(n2)式子.....過了之后看題解發現轉化一下變成了O(n)的錯排公式...
第二道是個記憶化搜索...
發現自己的記憶化好像有些"主流"...用long long10進制壓位壓到MLE.....
最后正解開了個6維數組....事實上,還是我提煉本質的能力不夠...
我沒有提煉出"數量相同的油漆本質相同"這個性質.....
然后上午繼續考試
T1是個奇怪的結論題...T2n√n亂搞,T3大力DP....
結果30+100+0=130/300 rank13...
但是其實掛了不少分....
T1考完試之后發現自己的一個歷史版本可以拿70分,也就是掛了40;
T3的40分+的狀壓直接打掛爆零....
但是最后T3的那個DP真的是太棒了...真的是好題啊.....
然而我還是沒有推出來...為什么會這樣呢....繼續%wqdalao搶紫標...
剩下的練習時間不多了...抓住每一道題鍛煉這種推理分析的能力....
改完考試題,下午去考NOIP初賽....體感比去年還是個萌新的時候好多了...雖然現在還是很弱....
然后晚上回來繼續做雜題...雜題啊雜題....
2017/10/15
上午考試,結果考着考着停電了233
於是教練拉着我們嘮嗑……跟我們說到了他為什么要帶OI
然后交流的時候奇怪的要我交流感想……害怕,只好瞎扯一些了……
但是這個“最初的心意”的問題,的確很關鍵啊……
聊了一個小時來電了……接着考,最后270/300 rank6
下午試圖自己推一道結論題,結果從下午1點推到晚上8點……
生無可戀.jpg
遇到結論題就傻眼……看完題解都能理解,但是自己就是推不出來……
dg說要培養思維能力……慢慢來……
2017/10/16
今天沒有考試,所以搞了一些新知識,初步學了一下樹的點分治
樹的點分治主要可以搞一些關於樹上路徑(尤其是路徑長度)的詢問問題
比如說,距離不超過k的點對有多少?是否存在長度為Len的路徑?
點分治主要利用“路徑要么經過根節點要么包含在子樹里”,
在根節點統計從根節點“伸下去”的路徑的信息,然后遞歸對子樹進行操作
當然也有一些神題我還沒做出來,也有一種叫動態樹分治的東西我還沒有學,但是這個點分治的思想的確很不錯。
2017/10/17
今天上午又開始考試了……接下來幾天都是一天一場的樣子。
但是shi味好濃厚啊……今天考試的3道題質量都非常的高。
T1是一個“經過實踐”優化的結論題,不過考試時候時限1s正解跑了3s。。。害怕
T2是一個簡單的DP+一個復雜的回代輸出方案,但是這個輸出任意方案的題沒有SPJ……
於是考場無人拿分,考完試要推測出題人心理改題……
T3是一道思想很像數位dp的樹形dp。。
題解里有這樣一句話:“由於是字典序有關問題,所以我們不妨用逐位確定的方法”
我當時看到T3想到了一個類似的思路,但是發現是n2的,於是沒有打,打算先去干前兩題
事實上n2暴力有80分,正解要用數據結構優化……但是我沒有打
最后前兩題也沒搞出什么名堂,最后只能20+0+10=30 rank11
這大概是考試策略的問題……有的時候前面的題不一定一眼就能看出來,先打后面的題可能是更好的選擇。
然后下午改題晚上改題改了一天……改不動QAQ
2017/10/18
今天上午繼續考試……100+5+35=140/300 rank14
T1是道字符串傻題,hash/kmp均可水過;不過一開始分析錯了,以為他有二分性……
后來第二遍讀題檢查的時候發現自己分析錯了,趕緊改過來……
T2是一個詭異的Tarjan題……一開始自己分析是割點然后點雙,發現自己只會打割點,不會打點雙的板子了……
然后十分慌亂,只想騙分,最后打了150行3個namespace,想騙40+,結果只拿了5分……
但是正解只是一個帶一點特殊處理的割點……還是自己板子的靈活運用不到家……
T3是一個有單調性的亂搞模擬,然后我單調性打不出來……技不如人啊……
然后當天下午打了一下午Tarjan,還學了學2-Sat……板子現在還差一個點雙沒有復習,回頭改一下……
2017/10/19
繼續考試ing……100+30+100=230/300 rank10+(中午機房停電了數據沒了233)
T1本來是一道割點水題(昨天做了一下午+一晚上Tarjan233),
但是由於數據沒有造的那么強,所以沒有正確性的貪心騙分也能過2333
T2是一道類似高考數學的結論推理題目……然而考場上腦子比較亂,結果最后結論推的比較混亂,30/100
最后發現似乎T2是最簡單的一道題。。。這種題我都能掛啊。。。
T3是一道樹上的貪心,要貪心選擇一些lca,然后用樹狀數組差分維護一下。
做題過程:發現第一題亂搞->亂搞->亂搞15min打完->看T2->推測是爆搜/結論->看T3->發現是樹上問題->
10min思考部分分->10min打倍增板子->不會處理->看T2->30min結論還是推不清楚->死循環死循環->
10min碼完一個T3無腦樹剖->推T2到考試結束
有什么經驗可以積累呢?
1.板子的掌握一定要熟練。在發現自己不會處理倍增如何差分之后果斷碼出樹剖然后就不用差分了,一遍調過。
如果當時的我沒有10min碼出板子的熟練度肯定會進入生無可戀狀態……所以板子的掌握很重要啊……
dg昨天過來的時候說:
板子打不熟不如不打,打了也沒用。
的確是這樣,如果板子打不熟的話想出來要用什么反而會讓自己更慌……
2.不要自亂陣腳。T2那道題打到最后我心里是發毛的……不是在推結論而是在猜結論……
然后心里極其虛。。因為當時T2和T3都沒有打出來,T3騙40分都沒打,當時我就不斷在兩道題之間想來想去……
然后最后一狠心去了T3打樹剖……還好最后有分
但是在做T2的時候心里真的是慌的。其實我應該鎮靜一些,反正分要一點一點拿,最后給題目分別留出時間,沒有什么可慌的。
下次考試的時候要更加淡定一些啊……
考完試進入了教練員談心時間= =
教練說:
每個人都要做好聯賽退役的心理准備。
不要把自己放在一個很高的定位上,不要覺得自己就應該拿多高的分數。
遇到shi題不要認為自己一定考低分,水題也不要認為自己能AK/拿高分。
引人深思……的確,OI的偶然性是很大的,並且在知識掌握水平相近的情況下,
心態的穩定性和思維的靈活性&嚴謹性是影響成績的最大因素……
旁邊的WQlao思維非常強……有的時候他想到的東西我怎么也想不出來……並且對知識點的運用也非常靈活……
可能這和對知識點掌握的靈活程度,以及平時練習時候的思考量有很大關系……
然而自詡心態很好……可能這是我唯一的優勢23333……到現在倒是沒發生過心態爆炸的時候……
思維啊思維……這個東西要不斷的鍛煉啊……
刷liu_runda雜題round2中……
2017/10/20
上午繼續考試……220/300 rank7
T1是一個水水的ST表/線段樹維護區間最值……
T2的正解是個奇怪的組合數(西瓜切n刀最多切幾塊),結果分段打表硬剛過去了233
T3……出題人沒有寫題解直接說讓看代碼……正解是二分+數位DP
聯賽,聯賽,聯賽怎么什么都考?
今年初賽考最小割計數……模擬賽考過數位DP,杜教篩,平衡樹……
晚上身邊一堆頹狗打線上模擬賽……還打的很熱鬧……
似乎整個機房就我在刷之前的題……害怕.jpg
似乎最近四五場我都在rank10上下游盪?
前幾天考完試老師跟我說接下來要是不考試我就別繼續搞省選知識點了,我的成績不太穩定。
說實話,我現在自己感覺成績不是不太穩定,而是遇到了瓶頸……
就是那種往上沖沖不上去,撞到牆然后回彈繼續撞那種感覺……
平時也有注意鍛煉思維,dg給的雜題也在盡可能的自己切掉……
做着做着逐漸有一點點手感了,但是還遠遠不夠……
到了考試看見思維題還是傻眼……尤其是神奇結論題,根本推不出來……只能瞎騙分
但是我可不能喪失信心……還有機會的,現在集訓時間剛剛過半,翻盤絕對是可以的!
為了自己的夢想,追求卓越!
明天似乎給續一天的假……高興0v0
2017/10/21
上午沒有考試……刷liu_runda雜題ing……
自己推式子做一道矩陣乘加速概率DP的題……結果被卡精了233
調了半天精度才過……不過學到了一些矩陣乘的新玩法!(下述純屬自己瞎扯)
*當數據范圍的一維非常大,(1e7~1e9),另外一維卻很小(30~100),並且轉移是線性齊次遞推式,我們就可以想想矩陣乘了。
*矩陣乘不一定只有一個轉移矩陣,當一個矩陣無法滿足轉移需求時我們可以多開幾個轉移矩陣表示不同的轉移(超級跳馬)。
*矩陣不一定只存一個狀態的值,我們可以把3維數組展成2維並編號實現后面原本兩維的轉移(Contra),
也可以把矩陣擴大幾倍來保存幾次轉移之前的值(超級跳馬)
*如果矩陣中含有大量的0,我們可以通過判斷是否為0從而減少矩陣乘的運算復雜度。
然后下午放假了……tui.exe
2017/10/22
中午回來之后開始考試……100+60+25=185/300 rank12
T1什么東西……普及組模擬題?
T2其實很不錯,因為他的部分分可以啟發人想到正解……
可以我沒想着騙那個部分分,自然沒有打出正解……
事實上正解是二分,每次轉換問題為那個部分分的簡化版問題,然后快速求出答案……
這道題啟發了我……原來部分分是真的可以啟發出正解的……
我們可以先考慮與部分分有關的原問題簡化版,
然后比較一下兩種做法有什么不同,有什么限制沒有使用,再想通過什么操作可以得到原問題的解。
T3又是一道樹上問題,這次我看出來了它正解中用到的一個性質,但是我沒有繼續往下用
因為我當時想了是個暴力維護然后跑n2的方法我就以為不能這樣暴力維護……
最后事實證明n2有接近90分……並且正解是把暴力維護O(n2)變成數據結構優化O(nlog2n)……
所以,暴力不是不可以,正解很可能是對暴力的優化,或者利用了暴力沒有利用到的性質。
然后改了一晚上題……改不動……
2017/10/23
上午繼續考試……110/300 rank10
似乎我考試的時候2min秒出來T3正解單調棧維護凸殼……
然后就死了……最后只得10分
我當時把數組的指針傳了進去……然后對那個指針的操作事實上會改變它的內容
最后我們只需要記錄一下改變了誰然后回溯就行了……差點扔一個可持久化數據結構進去……
T1的正解是一個prim……然后考場上hwwdalao用二分並查集+大剪枝打過去了……
然后考完試全都是打二分並查集的,事實上還比prim跑得快233
T2又是一道O(nlog2n)的log維護線段樹,只不過是優化DP……之前已經做過兩道這樣的線段樹的題了
事實上我沒有把原題的模型轉化過來……題目中給的是一個二分圖,然后讓判線段相交,
所以我們要找的就是類似逆序對的東西了,所以我們把二分圖的對應連點看成每個節點的高度/權值,
然后用線段樹維護上升序列的有關信息……由於我連n2的暴力DP都沒想出來所以沒有打出正解……
下午晚上繼續改題……還是改不動啊……
*坑點:千萬不要用define的東西對函數進行操作(尤其是三目運算符取min/max),除非你確定這樣帶來的運行次數是可以接受的。
2017/10/24
上午繼續考試……密碼是那年那個"你們那里下雪了嗎"
然后……被卡常了……300/300->140/300,rank10+……
T1的暴力是個O(n3)Dp(n=1000),然后用一個sum變量亂搞了一下優化到O(n2)……和正解並不靠邊233
T2是一個預處理+RMQ……可惜預處理打丑了……用了個set,O(n2logn)被卡了……開O2之后穩過的……
不過卡常這種事……據說CCF的老爺機比我們機房的辣雞linux還要慢……
所以能卡常則卡常啦……以后要盡量注意這種事,減少對STL的依賴,調用次數多的語句少寫函數……等等
T3是一個很巧妙的思路……數據范圍是216的,一開始我打了個01Trie的暴力,發現被卡常了……開O2跟卡常之后都能過
然后正解是一個類似分塊(分層統計)的思路……把每個數分成二進制前8位和后8位,
然后開一個二維數組cnt記錄“前8位是pre,后8位是sfx及其子集”的數的個數
這樣,如果插入/刪除一個數x,我們就枚舉包含x的后八位的數v,去更新cnt[pre][v],復雜度最大O(28);
然后查詢的時候枚舉x的前8位的子集,加上相應的cnt,復雜度也是最大O(28)。
由於cnt已經包含了后八位及其子集,所以這樣分層統計是正確的。
最后總復雜度是O(n*28)的,可以過2e5的數據……
考完試交流的時候發現wq考場上就想出來了一個類似的優化思路……我問他怎么想出來的……他說:
如果是01Trie的話那他就會直接給231了,這兩個對於01Trie來說沒什么差異,所以肯定不是01Trie
的確是這樣……這也印證的之前一句話,暴力一定沒有考慮題目中的某些條件……
比如這個01Trie的暴力就沒有利用題目中val值較小的條件。題目中的每一句話都是有用的,一定要仔細分析每一句話的用意啊……
2017/10/25
繼續考試……今天的題好毒瘤啊……T2捆綁測試不說,T3有100個測試點……
T1是一道找歐拉回路的題,不過我找的哈密頓回路,打上去倒是過了
據說是bzoj原題加強版……不過當時沒有做
T2是道樹規,還算比較裸吧……不過需要開個700MB的數組
最后發現只有WQlao和我A掉了?害怕
T3是個很不錯的暴搜……需要記憶化+雙向搜索+瞎j剪枝一頓優化……
這個雙向搜索我之前只是嘗試着打過雙向搜索的暴搜,事實上這的確是一種比較快速的搜索優化……
還有記憶化搜索,這個東西有利有弊,可以大幅優化狀態數,不過用STLmap比較慢,哈希表又算不好狀態數……
所以看情況打了,如果發現重復的狀態很多的話可以試試記憶化優化一波
Torywar犇考場上寫正解寫到了93分%%%
不過這題改到最后變成了刷榜狗的競速場
練習方面,今天補了下之前liu_runda雜題的坑,另外看了一篇很好的數據結構博客……OrzMike
2017/10/26
今天是liu_runda出的題……似乎和東北師大附中的幾個同學聯考了?
不過並沒有AK23333 100+100+0 rank13
T1T2都是那種亂搞……T1之前做過原題就是了
不過……T3的樹DP沒拿到分……數據太強了,只差了一點考慮,就一分也沒有拿到……
其實式子是對的,只是差一個細節的處理
然后今天下午繼續做雜題雜題雜題……做掉了很奇怪的背包(bzoj1190夢幻島寶珠)和奇怪的矩陣乘(bzoj3120Line)……
最近的題自己可以懟出來不少了……不過就是很慢啊……
但是必須自己一點一點努力才行啊,繼續加油干吧!
晚上開了新的DP專題……先把以前做過的題交上去然后開始一道一道剛……
*來自liu_runda的快讀板子
1 char xch,xB[1<<15],*xS=xB,*xTT=xB; 2 #define getc() (xS==xTT&&(xTT=(xS=xB)+fread(xB,1,1<<15,stdin),xS==xTT)?0:*xS++) 3 template <typename _t> 4 inline _t read() 5 { 6 _t x=0,f=1;register char ch=getc(); 7 while(ch<'0'|ch>'9'){if(ch=='-')f=-1;ch=getc();} 8 while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getc(); 9 return x*f; 10 }
2017/10/27
上午繼續考試ing……但是今天的題有毒啊……shi味很濃……
T1小模擬??我cao啊……mmmm模擬……我打了個150行的線段樹上去2333
T2是……事后證明是數據結構亂堆……
WQ:可持久化01Trie+線段樹+set+map+vector,上樹啊!
考場上先是打了個30分暴力,然后開始試圖想正解……
找到了正解用到的幾個性質,但是不會用……這就很尷尬了
最后也沒看出什么名堂……30分GG
T3是一道披着概率外衣的組合數學計數問題……考場上還有好幾個人A掉呢……辣雞.jpg
結果最后有rank15±1 65+30+0=95分?考場上有點感覺自己要AllZero的……
晚上dg過來的時候繼續給我們介紹經驗:
做題做不出來着急並沒有用,別人做出來是別人的事,這些並不能讓你做出題
想想dg說的……的確,我只能自己努力去試圖改變這種現狀啊……
希望明天能有改善!
2017/10/28
考試繼續…… rank21(提交沒加文件名,實際是rank28) 100+20+20=140
昨天最后那句就是個高懸的flag
T1辣雞水題……
T2上來一看,哈夫曼樹?NOIp模擬?
想想想……想不出來……×1
這個樹好像可以分成兩半啊?一半完全二叉一半每一層都有奇數?奇數的都×2?
……2h后……
想想想……想不出來……×n
樣例過不了啊,什么啊……
最后對着T2懟了2.5h+,然后並沒有什么卯月……
然后由於T2用力過猛,T3基本就是在划水……事實上考完試我半個多小時自己推出來了……
當時做T3的時候完全不冷靜啊……連個暴力DP都沒打出來
最后只好滾粗了……其實一開始T2懟不出來我就有一點棄療的念頭……
但是其實考完試再想……我應該正常看待,慢慢去懟……
也不能在一道題上吊死……去年NOIp兩天(個人感覺)都是T2比T3難的……
T2做不出來不影響T3,也許T3的分拿的比T2多呢
這幾天一直考rk16+……似乎比前一個階段14±2還要差……
我怎么越來越菜了啊……慢慢來……相信自己……
然后開始做新開的DP專題了,先是下午做一些奇怪的期望還有矩陣乘,還有狀壓以及tarjan dfs樹上的樹規
這個6啊……一開始我把點雙提出來建新樹打120行不過……后來在tarjan里面dp變短了一半多……
晚上做着做着撞到一道虛樹……然后簡單看了一下
事實上一開始我想到了要建出一些點比較少的新樹……但是不知道怎么建樹
然后就告訴我這是虛樹……然后用一個dfs序和一個棧維護dfs樹最右鏈就行了……妙啊……
2017/10/29
早上來機房把昨天晚上的虛樹改過了……今天考試題更加毒瘤了啊啊 rank9 100+10+0=110……
不過出題人要求不放題……那么就不說太多了,但是T3的dp真是太棒了……
不過T2是CF原題……這個說一說,xyzdalao搞出來一個“呆毛DP”噗
本來要枚舉去最小解……然后把它攤在dfs序上用線段樹維護就可以區間取min來快速處理了……
然后下午和晚上一直在想題……一道矩陣乘一道不知道是什么的概率,看了一天……到晚上也沒做出來一道……
2017/10/30
懟了半上午懟過來那道矩陣乘……那是矩陣乘加速狀壓……我天……
的確沒見過這種操作……這題是利用了題目中條件的變形,限制了二進制中1的個數,
把狀壓的狀態數減小之后用矩陣乘來做……妙啊……不過自己能懟出來很高興……
然后做一道樹上的貪心……結果當成樹規看了兩小時……沒想出來,菜雞.jpg
然后看那道概率看了一下午,把自己懟死了……到了晚上只好看題解……
%%%CLJ爺爺
據CLJ爺說這題(ZJOI 2015 D1T2)是送分的,結果我看着這題他看了一天233
CLJ的正解是用積分做……並看不懂,最后還是參考幾份題解看懂了……
一個關鍵詞,大概就是正難則反吧……這個還是挺重要的,
就這道題來說用了好幾次向相反方向的轉化,最后才找到一種可以求的東西。
還有就是狀態數組的定義問題,把“等於”轉化為“大於等於”或者“小於等於”可能有幫助。
2017/10/31
今天是十月份的最后一天……還是萬聖節?
今天的考試還可以…… 在Linux上是295/300 rank3,不過window被保留字爆了編譯錯誤……
害怕……嚇得我不敢起變量名了……老師說這樣最吼的是加上下划線或者用拼音起名……
不過感覺好蠢啊23333
然后上午吃飯之前改完題……下午開始繼續刷dg的雜題3了
先是一道2-Sat……被打傻了……
原來前綴和不僅可以用來給時間加速……還可以給空間以及各種奇怪的東西加速……
這道題,舉個例子,把每個變量的真假看成0和1,要求每一給定的組只有一個為1,
那么那個變量之前的前綴和以及之后的后綴和都為0……
然后做一道比較裸的平衡樹……然后做着做着發現自己打麻煩了,想用線段樹+樹狀數組搞只用樹狀數組的活2333
然而WQ用替罪羊打了一個按下標建樹的樹……%%%
然后做一道奇怪的……圖論(bzoj方伯伯運椰子)
以為它是網絡流先懟了一小時……然后越看越不對……
最后改變思路……轉成spfa求負環……最后還是自己想出來了,高興。
WQ自己干出了小凸玩密室,強啊!
RYF明天似乎過生日了?提前祝生快啦……
2017/11/1
(好了我終於有時間來更新了)考試划水,上午一場晚上一場……
上午是neither_nor的題……結果隊爺就給我們搬了3道集訓隊作業然后部分分大放送一下……
T1是個瞎貪心的樹上問題……推一推結論打了過去
然后看T2,T2……是啥?不會,待會騙分吧……
看T3,發現好像可做?裸dp的轉移是轉着圈來的……我先打個暴力dp然后再優化吧
然后開始手玩樣例……發現自己玩不出來……然后所有人都沒玩出來
老師也沒給解釋……只能自己慢慢手玩……
然而最后沒玩出來……白耗90min
然后回去給T2打了個爆搜30,剩下還有30應該是什么式子,沒推出來……
最后又調了調查查錯,rank10 100+30+0=130
考完試發現gxyT2正解拿了80,正解是個遞推(DP)……
為啥當時我沒想出來?其實是沒有觀察到一個重要的結論……
很多題都是根據結論優化算法甚至直接解題的,所以推結論的能力必須要鍛煉啊……
(怎么鍛煉?瞎猜就行,多猜幾次就熟練了233)
然后晚上繼續考試……
上來看T1,玩了一玩發現一些規律……然后搞了個單調決策亂掃,O(60*3e5),1s很虛……
然后拿單調決策和二分決策對着拍……發現二分決策跑的很慢,之后優化了一下,交了決策單調性那份。
然后看T2……發現是zz數據結構,然后……我竟然選擇打無旋Treap……只T了5分我很感動啊……
參考的題解沒有用數據結構,但是大部分人都是線段樹砸過去的……
看T3……發現是個貪心,並且部分分可以搞的似乎不少……
然后先打40分,還有60分似乎要用二分圖染色?我不會那玩意啊……
然后剩下的時間一直在想怎么做這個東西……
但是我一開始打的40+做法掛了,在貪心分區間的時候,新區間的最后一個數我沒有統計入答案然后WA了不少……
最后rank6 100+95+24=219……
最后了解到那個東西可以用並查集維護……也就是說用並查集維護"給2個集合,某些對元素不能處在同一個集合"這樣的關系……
這個處理可以用帶權並查集維護路徑長度的奇偶(順便復習了一下帶權並查集的板子),
也可以對每個元素維護“敵人集合”,這個做法比較妙……
因為如果A和B同時在C的敵人集合里,如果AB間有矛盾他們就是非法的……這樣就可以搞了……
沒有想到……並查集的確是維護"集合"以及“連通性”很實用的工具……
2017/11/2
今天掉智商比昨天還嚴重2333
上午T1是個奇怪的……考試的時候我根本不知道是奇怪的什么,考完試發現是個遞推
昨天掛了一道遞推,今天又掛了一道遞推……事實上我遞推的意識以及能力還是不夠強……在聯賽之前要再強化一下……
有的時候很多東西壓根想不到要遞推,或者想到了也想不出來數組定義……
T2是個披着SA外衣的……結論貪心……
那個結論很顯然,一看就能體會,但是當時我沒能想出來……
事實上現在我的推結論能力還是不是很強……要多做一做這樣的題鍛煉鍛煉……
然后T3是神奇樹規,我的數組定義有問題最后沒打出來……WQ考場打出來了,%%%
這道題的數組定義和heoi2017的分手是祝願極其相似,但是沒有定義出來,最后自然也沒打出來
最后rank26 30+0+0=30
我好菜啊.jpg
雖然沒有考好是有一點傷心沒錯……但是我並不覺得有多大影響……
自己想不出來題是能力問題,這個東西要靠不斷的鍛煉,再急也沒用……
一次沒有考好並不意味着全部,首先,這不是正式比賽,
而且就算是正式比賽,也有翻盤的可能,沒到最后的時刻誰也不知道勝算幾何。
晚上又考一場,更加刺激……
T1是小學數奧抽屜原理,不會做,只好打50pts背包
T2是奇怪的小模擬,利用符合條件的數的性質亂搞……但是沒有發現性質
T3是真的6……Trie樹的題,思路的轉化很巧妙。
題解的思路把暴力統計變成枚舉點對,然后從枚舉點對變成枚舉特征相同的組的“組隊”。
然后用Trie樹維護這個"組”就行了……
最后rank15 60+17+10=87……依然不是很理想……明天繼續努力吧……
2017/11/3
先碼一個對無旋Treap的優化鏈接,聯賽之后再研究……
http://www.cnblogs.com/Christopher-Cao/p/5505434.html
今天沒有考試?刷雜題ing
首先上午解決了1號晚上開始做的一道樹剖好題(LNOI2014 LCA)……
這道題有兩個很不錯的思想:第一個是模型的轉換,把深度轉換為“到根節點的路徑上的節點數”,
然后把直接算深度轉化為樹剖數節點數……
第二個是改變枚舉對象……我一開始是考慮每一個詢問去找它的枚舉點,
然而如果轉換思路變成枚舉每一個點去看它能更新的詢問點,就變得很簡單了……
接下來是一道據說是樹規的題(SDOI2013 直徑)……
看不出來怎么規……推了個小性質,扔了個線段樹強行打一波結果A了……
正解的O(n)dp看不懂……如果是考試我估計會打這個nlogn的數據結構……
然后做了一個奇怪的遞推題……還好有一點手感……
然后是經典單調隊列(JSOI2015 送禮物)
沒想出來……但是題解其實比較簡單……
最大值和最小值不確定,就枚舉每個數作為最大值,然后去找一個配對的最小值
這種化變為不變的思路一直都是很重要的……
充實的一天……
2017/11/4
上午繼續考試……離聯賽只剩下一周了……
上來先看T1,什么鬼……貪心?二分?先不打,看看T2……
T2……先推一下結論,似乎有結論……然后樹規一下?打打打……
打完過了大樣例,回去把T1的二分貪心打出來,也過了大樣例……
這個時候剛1h……然后看T3……
似乎有30pts是特殊性質分?還有30pts是環套樹性質?打打打
打了60部分分,然后開始想正解……
一開始其實有一個向正解的發展方向,但是沒有往那個方向想……
一直在想MST的性質之類的,並且后來也有一點懈怠……已經打過了2題,看T3的時候就有一點“這波我穩了”的錯覺……
最后發現T1掛了70pts……二分的時候右邊界2e9,一開始左邊界是0,是可以A的,
后來我加了個剪枝把左邊界增加了一些,結果二分左右邊界相加炸了int
T3數據有鍋……全場最高30,然后lc想到了正解樹剖……
最后rank14 30+100+30=160
怎么說呢……雖然T3測試點鍋了,但是T3的表現我很不滿意。
明明可以想到更多,但是由於自身的懈怠並沒有做到,需要改進……
2017/11/5
今天又考了2場……
上午T1,什么鬼?這好像要用Tarjan?……
推了一會發現推不出來,往下看……
T2……畫風更不對了……這是什么鬼畜的字符串啊……我難道要先看T3嗎……
然后T3是樹規……推了推式子,是前兩天考試題的變形?誒不錯,打打打……
打完T3,過了大樣例……然后倒着回去看T2……
研究了一下,發現這東西字典序最小是唬人的……直接模擬就行了……
然后打了打hash判相等亂搞一下……調了一調過了大樣例……
最后回去看T1……先打了樹的40pts,然后開始瞎想……但是想不出來……
想啊想,又瞎打了個樹剖發現不對……然后再把樹剖扔掉
結果只能交樹的40分,結果數據好像很水,多拿了10pts
最后正解是TM支配樹……第二次碰見支配樹了……上次沒學,這次好好看了看……
http://blog.csdn.net/a710128/article/details/49913553
下午2:30考試第二次……
T1怎么又是鬼畜的整數倍啊!這次我有經驗了……直接去找前綴和相等就行了……
T2不是前兩天做過的那個貪心嘛……打打打(雖然最后犯了和那天一樣的錯誤,沒有AC)
T3……
2.5h全程看T3,並沒有什么卯月……
當時看着k很小,應該是針對k的狀壓吧……然后呢?然后就死了……
最后rank12 100+95+28=223
事實上最后的最后T3用了好幾遍的模型轉換……首先有這么一句話很是重要……
把區間修改轉化為點修改的有效方法:差分
然后把修改區間變成修改兩點,然后瞎轉化模型……轉換成圖論又轉化回狀壓……
不得不說這題太強了……
然后晚上和wq討論了一下改題……
大概明天是最后一天自主做題時間?那復習一下好了……
2017/11/6
LAST UPDATE:2017/11/6 06:06:33