原创 最短路樹學習筆記及例題

定義構建一棵樹,使得任意不屬於根的節點x,dis(root,x)=原圖走到x的最短路。 構建方法:就是在跑dijkstra時同時維護每個點是哪個點哪條邊更新的,這個點這條邊就是它在最短路樹上的父親/到父親的邊 例題: T1.bzoj369

原创 快速求解原根

設模數爲p,所求數爲 1.O(p1/2)O(p^{1/2})O(p1/2)預處理+O(log2)O(log^2)O(log2)判斷一個 對p-1分解質因數,一個數x是模p意義下原根當且僅當對任意y⊂y\subsety⊂{p-1的質因數

原创 動態dp學習筆記

基本是維護一個矩陣,它的矩陣乘法是a(i,j)=max(a(i,j),b(i,k)+c(k,j)) 模板題: https://www.luogu.org/problemnew/show/P4719 樹剖後一個點f(x,0/1)表示x點

原创 cf414g-思維好題轉載

知道結論才能做,而證明結論纔是這題精髓 (但我根本不會,以下均轉載自大佬博客https://blog.csdn.net/xaphoenix/article/details/72681794?utm_source=blogxgwz2) --

原创 整體二分學習筆記

用於處理一些維護區間k大k小的問題。以區間k小爲例,將詢問和修改離線下來,然後對所有詢問修改二分值L、R以及Mid並同時維護哪些修改的值<=Mid,哪些詢問答案會在[L,R]內,那麼用樹狀數組跑當前這層的修改(即小於等於Mid的在bit上

原创 卡只有路徑合併並查集

並不會證明......卡法就是每次選擇當前點中深度最大的接上一個孤立的,如果要更優還可以在最後幾步裏挑最大和次大合併,打表發現find_father函數每次合併時調用次數是2,3,4,4,5,5,5,5,6,6,6,6,6,6,6,6..

原创 HDU4624:Endless Spin

題意:給定一個序列,每次隨機覆蓋一個區間(起點和長度均隨機),求期望覆蓋完整個序列長度。 min-max容斥,min(S)=n*(n+1)/2*sum(S),sum(S)表示至少包含S集合中一個點的區間數,可以考慮一個補集轉化,求一個都不

原创 時間分治(線段樹分治)

對於一類有插入、刪除(撤銷插入)和整體查詢操作的題目,可以考慮按時間分治(也可以叫線段樹分治),就是對於每一個插入操作處理出它存在的時間,那麼就不用管刪除操作了,再將這些插入操作存在區間建立一棵時間線段樹,每個節點是一個vector,然後

原创 min-max容斥

參考大佬博客:https://www.cnblogs.com/utopia999/p/9898393.html 基本就這倆式子: max(S)= T⊆S∑(−1)^(|T|−1)*min(T) min的話上面min和max反一反… 看

原创 各種反演公式記錄

(二項式反演) (轉載自https://blog.csdn.net/ez_2016gdgzoi471/article/details/81408416) 莫比烏斯反演太常用不寫了... 最值反演: max(S)= T⊆S∑(−1)^(|

原创 遞歸式轉化爲求和式

學習from:https://godweiyang.com/2018/03/12/concrete-math-3/ 比如有anTn=bnTn-1+cn求解Tn 設一個sn=(a1a2…an-1)/(b2b3*…bn) (這個設的東西是

原创 多項式總結及模板

1.求逆 設要對多項式A求逆,逆爲B: 求在模ceil(n/2)的逆,將原式與之相減後平方,發現可得在模n意義下也是0了,然後兩邊同乘A,移項即可倍增了(注意此時A也是在模當前長度意義下的)。 最後倍增形式爲B'=2*B-B*B*A  (

原创 泰勒展開、牛頓迭代

泰勒展開: 基本上是用一個近似的多項式表達一個函數,在某個x0處進行多次求導,得到一個新的多項式: f(x)=f(x0)+f′(x0)(x−x0)+f″(x0)2!(x−x0)2+⋯+f(n)(x0)n!(x−x0)n+Rn(x) 其中最

原创 【清華集訓2016】如何優雅地求和

  讀入的x把它重命名成p,首先發現式子可以化爲sigma(k=0~n)ai*Q(f=x^i,n,p),其中ai是多項式的每一項係數,發現所求就是f=x,x^2,x^3......的Q的值,發現這樣很難求,但帶入f=x可以得到化簡的一個利

原创 另類分治fft

遇到一道題求f(x)=sigma f(i)×f(x-i)這樣的,做法是這樣的:(下面F與G都與f有關),正確性感性理解。。 if(l==r) { if(l==1)f[l]=1; else Mul(f[l],jc[l-2]);