原创 【bzoj4869】[Shoi2017]相逢是問候(擴展歐拉定理+線段樹)

題目鏈接 第一眼看上去這道題很像這道題。我們不難想到是擴展歐拉定理。這裏還有區間修改和區間查詢,所以我們不難想到用線段樹。 具體怎麼做的話,首先我們要知道一個神奇的東西(我也不會證),就是擴展歐拉定理中它最多隻需要遞歸log2 n

原创 【bzoj4836】二元運算(cdq分治+FFT)

題目鏈接 看到題面就不難想到是FFT的題 對兩個序列各開一個桶,分別爲A和B 當y≤xy≤x 時,不難想到把A反轉一下,然後把A和B做一個卷積就好了。 當x<yx<y 時,我們可以考慮cdq分治,合併區間把A在左區間的部分

原创 【HDU6067】【XSY2535】Big Integer(NTT)

題目鏈接 如果我們知道111到k−1k-1k−1中每個數的出現次數分別爲c1,c2,...,ck−1c_1,c_2,...,c_{k-1}c1​,c2​,...,ck−1​,用排列組合相關知識就可以算出這樣的數就有(∑i=0k−1

原创 Learning:數論(二) 積性函數

前置知識:狄利克雷卷積、線性篩 積性函數的定義若數論函數fff滿足∀a⊥b,f(a)⋅f(b)=f(ab)\forall a\perp b,f(a)\cdot f(b)=f(ab)∀a⊥b,f(a)⋅f(b)=f(ab),則fff

原创 【CF482E】【XSY2497】ELCA(LCT)

很顯然是LCT,但是很難維護 因爲求期望我們只需要在統計出所有情況的aaa的和之後除以n2n^2n2就好了,所以在LCT中只需要統計所有情況的aaa的和,下面LCT中的答案都表示這個。 LCT的每個節點維護6個值,分別爲siz,s

原创 NOIP2018 提高組題解(比較簡單的一些思路)

Day1(三道原題祭) T1: 區間減法不難想到差分。 差分完之後手動模擬一下發現就是把差分數組中的證書加起來就好了,時間複雜度O(n)O(n)O(n)。 T2: 有一個非常顯然的性質:簡化後的貨幣系統一定是原本的貨幣系統的子集。所以

原创 調和級數近似求和公式推導

調和級數是一個非常著名的級數,對於調和級數我們有一個近似的求和公式: ∑i=1n1i=ln⁡(n+1)+γ(γ爲歐拉常數,γ=limn→∞∫1n1⌊x⌋−1xdx約等於0.57721566490153286060651209,)\su

原创 【BZOJ4016】[FJOI2014]最短路徑樹問題(Dijkstra+長鏈剖分+樹狀數組)

題目鏈接 首先最短路徑樹我們可以直接用Dijkstra來求(不用字典序也能過2333)。 求完最短路徑樹之後呢,就可以用長鏈剖分+樹狀數組來求最長的包含K個點的簡單路徑長度爲多長和長度爲該最長長度的不同路徑有多少條(也可以用點分治,但

原创 Learning:多項式(三)一些NTT的擴展

任意模數FFT 如果模數不是一些NTT的模數,那我們又如何解決呢?(當然用拆位FFT也可以做,但是我沒寫過) 首先我們知道有個東西叫中國剩餘定理。 我們可以選取多個模數先用NTT求一下,然後再用中國剩餘定理合併。一般取三個模數。 但是

原创 【XSY1537】五顏六色的幻想鄉(矩陣樹定理+高斯消元+拉格朗日插值)

題意:有nn 個點,mm 條有顏色的邊,顏色爲紅色藍色和綠色,對於所有滿足r+b+g=n−1r+b+g=n−1 的三元組(r,b,g)(r,b,g) ,求恰有rr 條紅色的邊,bb 條藍色的邊,gg 條綠色的邊的生成樹個數。 題解:

原创 【bzoj4631】踩氣球(可並堆+並查集)

權限題題目鏈接 這道題其實是一道可並堆的經典題。 每一個盒子維護一個小根堆,存儲以這個點爲左端點的右端點。一旦一個盒子裏的被取空,就將這個盒子和下一個盒子合併,然後不斷判斷這個堆的堆頂是否小於下一個盒子的編號來統計答案。合併就用左

原创 題解:【bzoj4596】[Shoi2016]黑暗前的幻想鄉(狀壓+容斥原理+矩陣樹定理+高斯消元)

Description 四年一度的幻想鄉大選開始了,最近幻想鄉最大的問題是很多來歷不明的妖 怪涌入了幻想鄉,擾亂了幻想鄉昔日的秩序。但是幻想鄉的建制派妖怪(人類) 博麗靈夢和八雲紫等人整日高談所有妖怪平等,幻想鄉多元化等等,對於幻想鄉

原创 【AT2166】Rotate 3x3

題目鏈接 這道題其實難度不大 首先將存在一列不合法的直接捨去 用to[i]to[i] 表示第ii 列原本在矩陣中的位置 我們會發現,如果ii 和to[i]to[i] 不是同爲奇數或同爲偶數時是不可能將初始矩陣變爲給定的矩陣。 先把

原创 【BZOJ4002】【JLOI2015】有意義的字符串(數學,矩陣快速冪)

看來我數學還是太弱了,這道題也沒有想到。 我們發現(b+d√2)n(b+d2)n 是個無理數,而且這個數非常大,所以無法直接計算。我們又發現(b−d√2)n(b−d2)n 的值雖然是個無理數,但是他的值向下取整之後非常好計算。然後我們又

原创 【GDOI2016】瘋狂動物城(樹鏈剖分+可持久化線段樹)

碼農題…… 調了我三個晚上…… 看來我的代碼能力還是太弱了…… 首先我們不難發現在u到v這條鏈的答案爲∑ni=1(n−i)(n−i+1)ai2∑i=1n(n−i)(n−i+1)ai2 然後把它拆開可以得到答案爲∑ni=1(n+1)