TJOI2019


TJOI出一堆模板題還玩一堆梗是什么鬼

甲苯先生的字符串(矩陣快速冪)

矩陣快速冪模板題

代碼

甲苯先生的滾榜(樹狀數組、線段樹)

最開始想平衡樹搞,但是平衡樹太難寫了

一次答案的查詢相當於查詢比當前的人AC數多的人數+和當前的人AC數一樣多,但是罰時更少的人。前者可以使用樹狀數組維護每一種AC數量的人數的前綴和,后者使用動態開點線段樹,在修改的時候可以一並求出答案。

注意動態開點線段樹及時回收無用空間,空間消耗就很少了。

如果不知道怎么開數組就統統開\(5 \times 10^6\)……

代碼

唱、跳、rap 和籃球(容斥、生成函數)

律師函警告

其實這道題也挺板子的,但是容斥沒學好有點不會qwq

注意到兩個不合法序列之間不可能相交,所以可以容斥序列中總共出現了多少個不合法序列,然后計算本質不同的排列的方案數。由指數型生成函數,有\(i\)個不合法序列的序列的貢獻是\(n![x^n]\frac{x^{4i}}{i!}(\sum\limits_{j=0}^{a-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{b-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{c-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{d-i} \frac{x^j}{j!})\)

直接NTT復雜度\(O(n^2logn)\)可以通過,但有復雜度更優的做法:枚舉\(i\)時維護\((\sum\limits_{j=0}^{a-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{b-i} \frac{x^j}{j!})\)\((\sum\limits_{j=0}^{c-i} \frac{x^j}{j!})(\sum\limits_{j=0}^{d-i} \frac{x^j}{j!})\),因為\(i\)每次增大\(1\),這四個式子只會少一項,所以可以\(O(n)\)更新,求出這兩個多項式的卷積的其中一項也可以\(O(n)\)。這樣復雜度變為\(O(n^2)\)

代碼

大中鋒的游樂場(最短路)

分層圖最短路模板題

代碼

甲苯先生和大中鋒的字符串(SAM)

SAM求endpos模板題

代碼

甲苯先生的線段樹(記憶化搜索)

謝罪警告、328警告

原題:CF750G 禁賽3年警告

應該是TJOI里面最妙的題目了。第一問暴力跳父親。在下面的敘述中,設第一問的答案為\(len\)

對於第二問,考慮枚舉鏈上深度最低的點\(x\)\(x\)的左兒子和右兒子的鏈深度\(L,R\)\(L,R\)可以為\(0\)),記作三元組\((x,L,R)\),那么這條鏈的編號總和的下界是\(x+2x+...+2^Lx+(2x+1)+(4x+2)+...+(2^Rx+2^{R-1}) = (2^{L+1}+2^{R+1}-3)x+2^R-1\),也就是兩條鏈都向左延伸的情況。

對於長度為\(L\)的左鏈,自底向上,第\(1,2,...,L-1\)個點都可以選擇其父親的左兒子或者右兒子,對於第\(i\)個點,選擇右兒子相比選擇左兒子編號之和會增加\(\sum\limits_{j=0}^{i-1} 2^j = 2^i-1\),右鏈同理。那么不難得到整條鏈的編號和上界是\((2^{L+1}+2^{R+1}-3)x+2^R-1+2^L+2^R-L-R-2\),即兩條鏈都向右延伸。因為\(2^L+2^R-L-R-2 < 2^{L+1}+2^{R+1}-3\),所以\((x,L,R)\)的鏈編號和上界比\((x+1,L,R)\)的下界還要小,說明每一個\(x\)對應的鏈編號和范圍無交。

那么不難得到枚舉了\(L,R\)之后,\(x\)只有可能等於\(\lfloor \frac{len - 2^R+1}{2^{L+1}+2^{R+1}-3} \rfloor\)。接下來我們的任務是給左鏈和右鏈的節點分配是其父親的左兒子還是右兒子。上面提到了第\(i\)個點選擇右兒子相比選擇左兒子會有\(2^i-1\)的增加量,所以我們需要求出一個長度為\(L-1\)\(01\)串和長度為\(R-1\)\(01\)串,\(01\)串的第\(i\)位為\(1\)\(2^i-1\)的貢獻,要求兩個串的貢獻和等於\(len - ((2^{L+1}+2^{R+1}-3)x+2^R-1)\)。這個可以數位DP,如果懶可以大力記憶化搜索。

至於記搜復雜度反正比數位DP的\(O(d^5)\)快很多就完事了證是不可能會證的

代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM