原创 HDU 5096 ACM Rank Treap綜合

題目鏈接 2017.9.5 1:40 用很大很大的數據量對拍了好久好久終於找出了錯誤 智障到哭泣 erase 時 bool dir = t->ch[1]->key < t->ch[0]->key; 寫成了 bool

原创 2017多校八 1002題 hdu 6134 Battlestation Operational 艾弗森約定 莫比烏斯函數 分塊

題目鏈接 題意: Your should calculate the total damage to the battlefield. Formally, you should compute f(n)=∑i=1n∑j=1i⌈ij

原创 強聯通分量 縮點 tarjan 入門題小集

參考 強聯通分量及縮點tarjan算法解析 ——九野的博客 強連通tarjan模版 ——九野的博客 HDU 1269 題意 判斷給定的有向圖是否強聯通,即判斷圖中的強聯通分量數是否爲 1 . Code #include

原创 NJU 1017 [JSCPC2016]Heresy 莫比烏斯反演

題目鏈接 題意 求∑i=1n∑j=1mi2j2gcd(i,j) (題面上寫 n≤106 ,事實上是 n≤1e6 . 十分感謝WuBaizhe,不然我就一直RE死不瞑目了… 莫比烏斯反演這塊也是一篇一篇看着WuBaizhe的b

原创 BZOJ 3930 [CQOI2015]選數 & 51nod 1244 莫比烏斯函數之和 & BZOJ 2301

這篇文章姑且叫做小總結大雜燴吧(大霧) BZOJ 3930 題意 從區間 [L,H] 中選取 N 個整數,求它們的最大公約數爲 K 的方案總數,答案 mod1e9+7 . 1≤N,K≤1e9,1≤L≤H≤1e9,H−L≤1

原创 POJ 2985 The k-th Largest Group 第k大數 Treap / 樹狀數組 + 並查集

題目鏈接 題意 有 n 只貓,m 次操作(n,m≤2e5 ): 0 i j :將第 i 只貓所在組與第 j 只貓所在組合並; 1 k :詢問第 k 大的組中有多少隻貓。 法一:Treap 參考資料 董的博客 數據結構

原创 BZOJ 2733 [HNOI2012]永無鄉 Treap + 並查集

題目鏈接 題意 給定一個圖,每個點上有權值。兩種操作,連結兩個點;問與某個點連通的所有點中權值爲第 k 小的點的編號。 思路 HDU 3726 Graph and Queries 離線處理 treap + 並查集 的簡易版,直接

原创 2017多校九 05題 hdu 6165 FFF at Valentine 縮點 dp找最長鏈/拓撲排序

題目鏈接 題意 判定一個圖是不是單向連通圖。 // 其實就是poj 2186,不過poj的那道題數據水了些= = // 瀏覽題目時看成了FFT at Valentine嚇死我= = 思路 先套路一發,tarjan求強聯通分

原创 BZOJ 3211 花神遊歷各國 線段樹 / 樹狀數組+並查集

題目鏈接 題意 兩種操作 1. 對一段區間開方 2. 詢問區間和 思路 這道題最關鍵的地方就是注意到 開方 操作進行幾次後數字就變成了 1 (或者有的一開始就爲 0 ),之後的操作都是沒有意義的了 線段樹 用一個 flag

原创 BZOJ 4551 樹 dfs序+線段樹 / 並查集

題目鏈接 題意 給定一顆有根樹(根爲1),有以下兩種操作: 1. 標記操作:對某個結點打上標記(在最開始,只有結點1有標記,其他結點均無標記,而且對於某個結點,可以打多次標記); 2. 詢問操作:詢問某個結點最近的一個打了標記

原创 HDU 3726 Graph and Queries 離線處理 treap + 並查集

題目鏈接 題意 給定一個圖,每個點上有權值。三種操作: 1. 刪去某條邊; 2. 修改某個點的權值; 3. 詢問與某個點連通的所有點中權值第 k 大的值; 最後輸出所有詢問的平均值。 思路 因爲是離線操作,所以考慮 倒着

原创 hdu 5608 function 莫比烏斯反演 / 杜教篩

題目鏈接 題意 有∑d|Nf(d)=N2−3N+2 求∑i=1Nf(i) N≤1e9 ,答案 mod(1e9+7) 法一:莫比烏斯反演+杜教篩善後(?) 546ms (先感嘆一句…我真的是學啥忘啥,看到題目就啥都不想直接杜教篩的

原创 BZOJ 3309 DZY Loves Math

題目鏈接 題意 求∑i=1a∑j=1bf(gcd(i,j)) 其中f(x)={α1,x=p1α1∗p2α2+...+pnαn,α1>α2,...,αn0,x=1 推導 法一:艾弗森約定 記 gcd(i,j)=k , 則有 gcd

原创 poj 3237 Tree 樹鏈剖分 線段樹

題目鏈接 題意 給定一棵樹,每條邊上都有權值。 三種操作: 1. 修改某條邊的權值 2. 將某條樹鏈上所有邊的權值變爲相反數 3. 詢問某條樹鏈上的最大邊權 思路 先樹鏈剖分,然後建線段樹,維護一段的最大值和最小值(Laz

原创 dfs序基本類型 詳細

參考 dfs序七個經典問題 ——weeping 本博文又名:手把手教你寫樹狀數組 1. 單點修改,子樹和查詢 單點修改,區間查詢 樹狀數組 維護每個點的權值: 1. 修改x (增加w ):單點修改——add(x,w);