原创 Acesrc and Travel 換根

link 換根DP,建議用以下寫法,通過存儲前綴極值,從而不需要複雜的分類討論 #include<bits/stdc++.h> #define fi first #define se second #define pb push

原创 Victor and String 迴文樹拓展

link 前後端同時插入,增加前綴fail指針,發現對於每個節點,前綴fail和後綴fail相同。那麼分情況直接更新就好了。並且在前面插入字符時不會影響原樹的fail。因爲每個節點的fail長度比他本身小。 並且要注意,當插入一個

原创 Code forces 1367 Flying Sort

找x,x+1,x+2,…x+k這樣的子序列,其中首尾不必全部 出現,中間必須全部出現 分三種情況dp #include<bits/stdc++.h> #define ls rt<<1 #define rs rt<<1|1 #def

原创 Palindrome Mouse 迴文自動機

link 考慮每個點對答案貢獻爲除他本身外,所在fail鏈上節點個數和迴文樹上該節點祖先節點個數。 這樣寫會有兩個問題 1.重複節點 2.時間複雜度 考慮遞推,該節點的貢獻爲其父親節點貢獻+它所延伸出fail鏈的個數+1 #i

原创 CodeForces Round #549 U2

考慮每一個點可得 bx+c>=y-xx 有左側直線在點{x,y-xx}上方,維護上凸殼即可 #include<bits/stdc++.h> #define ls rt<<1 #define rs rt<<1|1 #define f

原创 樓教主 男人八題之一 Poj 1741 Tree

link 樹上距離小於等於k點對對數 點分治模板 首先考慮經過某一點zx的對數,那麼我們可以通過dfs處理出所有點到zx的距離後求dis [a]+dis[b]<=k的個數(排序後雙指針),但是這樣算的時候還有可能兩點沒過zx,所以

原创 Pangu and Stones UVALive - 8177 區間dp

link 石子合併變形,每次只能將[ L ,R ]堆石子合併爲一堆. 在普通石子合併dp [i] [j]上 添加一維 dp[i][j][k] 表示i~j區間還剩k大堆的最小花費 那麼dp[i][j][1]=min dp[i][j

原创 Codeforces Round #549 (Div. 2) E. Lynyrd Skynyrd

鏈接 倍增 :當前點要找的下一個點是固定的,利用倍增加速 注意初始化和遍歷順序 #include<bits/stdc++.h> #define ls rt<<1 #define rs rt<<1|1 #define fi firs

原创 CDQ 分治

目錄概述題目P3810P4169 概述 能夠解決一些三維偏序 或者 二維矩陣上的 問題。 第一維排序,第二維歸併,第三位樹狀數組 本質上就是利用歸併排序的性質,在合併兩個小區間的同時,由於小區間內的貢獻已經算完,所以只剩下左邊小區

原创 codeforces 645 Are You Fired?

鏈接 令 s[i]=a[i]+…+a[i+k-1],s[i+1]=a[i+k]-a[i],s[i+2]=a[i+k+1]-a[i+1] 則 轉變爲所有前綴和最小值 >0 1️⃣. k>=n/2 ----> s[1]=a[1]+.

原创 HDU 4912 貪心

HDU4912 任選一點爲根後,貪心優先填所有點對中LCA大的點。那麼以LCA爲根的子樹的所有點都爲不能再選的點 #pragma GCC optimize(2) #include<bits/stdc++.h> #define l

原创 Codeforces Global Round 1 Magic Stones

鏈接 很有意思的規律: 將:b->a+c-b 之後的查分數組:a,c-b,b-a 本來的差分數組:a,b-a,c-b 可以發現,題目的操作就是交換 差分序列的操作,所以問題就轉化爲怎麼交換原數組的差分序列,使其和目標序列的差分序

原创 Educational Codeforces Round 86 (Rated for Div. 2) E - Placing Rooks

鏈接 想使所有格子全被覆蓋,要麼所有行都有棋子,要麼所有列都有棋子。 假設現在是所有行都有棋子,那麼其中k對棋子互相攻擊就可以看成n-k列放n個棋子。那麼答案就爲2*C(n,n-k)*把n個物品放n-k個集合的方案數。 最後一項

原创 bzoj 2038 經典莫隊 小z的襪子

莫隊入門 小z的襪子 題意:n個數記ai,ai<=n m次詢問:l~r區間內任意選兩個數 求其相同的概率 稍微化簡爲 求區間內每個數出現次數的平方和 #include<bits/stdc++.h> using namespace

原创 HDU-2243考研路茫茫 AC自動機 + 矩陣快速冪

hdu-2243 n個模式串,求滿足長度小於等於k且至少包含其中一種模式串的串數(只包含 小寫字母) k<2^31-1 多模式串的計數問題,我們用AC自動機來解決 那麼問題來了 1)怎麼求至少包含一種的串數? 正難則反,我們用所有