1. 程式人生 > >[轉]分塊

[轉]分塊

增加 head 一個 評論 tips 查找位置 祖先 eba www.

轉自:https://www.cnblogs.com/Sdchr/p/7927411.html

分塊
  設閾值 T ,把數據劃分為兩類,某一類的數據具有某種優勢,另外一類的數據又具有另外一種優勢,就可以結合利用兩種優勢,達到更優秀的復雜度。
序列分塊
1. 「TH 2517」數顏色
  單點修改,區間不同數個數,強制在線。
2. 「SPOJ UNTITLE1」
  n <= 5e5 ,區間增加等差數列,區間最值。
  區間修改、區間查詢是一類經典問題,數據結構的做法通常是劃分為若幹個子區間,若子區間的信息能夠合並,則使用線段樹,否則分塊。
  對於斜率優化的問題,建了凸殼之後,可以直接三分,不需要二分。

塊狀鏈表
1. 「BZOJ 3065」帶插入區間第 K 小
  塊的大小在 [c, 2c] ,從而保證復雜度。初始化,查找位置(在末尾添加一個字符),插入(分裂),刪除(合並)。
值域分塊
1. 給定一個長度為 n(1e5) 的序列 a[1], a[2], ..., a[n] .
  m(1e5) 組詢問 (l, r, K) , 求區間 [l, r] 去除重復的數之後的第 K 小.
按大小分塊
1. 「2013 年國家集訓隊論文」
  給 n 個字符串 ti ,支持合並,或者查詢字符串 s 中出現過多少個字符串 ti 。
2. 「2013 年國家集訓隊論文」
  給 n 個區間 [li, ri] ,m 組詢問 [l, r] ,求與 [l, r] 相交的最長連續子序列的長度。
按質因子大小分塊
1. 「AGC 003D」Anticube
  K 補數:定義,求解,平衡規劃至 $W ^ {\frac{1}{3}}$ 。
2. 「POI 2010」Divine Divisor
  給 n = a1 * a2 * a3 * ... * am ,m <= 600, ai <= 1e18 。求最大的 K ,存在完全 K 次方因子,並求出此時完全 K 次方因子的個數。
  類似 AGC 003D 的做法。將因子分解完之後,取最大次數即可。設 W = 1e6 ,對 W 以內的進行分解,剩下最多只能再分解兩次,有三種可能:p, pq, p^2 ,對 p^2 直接判掉,求兩兩 gcd 嘗試將 pq 進行分解,否則 pq 作為整體考慮,權重為 2 。
3. 「TH 2603」乘積
  選擇 K 個不超過 N(500) 的正整數,乘積為無平方因子數,問選擇方案數。
圖分塊
1. 「TH 1021」邊學圖論邊染色
  n 點 m 帶權邊無向圖,點權 0 和 1 ,要麽將某個點的顏色改變,要麽詢問所以 x - y 邊的邊權和。
  重點擅長枚舉點、枚舉重點到重點的邊,輕點擅長枚舉邊,邊要去重。
莫隊算法
1. 帶修改莫隊
  $A = \left\{ a_1, a_2, ..., a_n \right\}$ ,單點修改,詢問區間不同數個數。
2. 樹上莫隊
  入棧出棧序的性質:
  1. 當 x 是 y 的祖先時,$\Delta [in(x), in(y)] = path(x, y)$
  2. 當 x 和 y 沒有祖先關系,$out(x) < in(y)$ 時,設 $z = LCA(x, y)$ ,則 $\Delta [out(x), in(y)] = path(x, y) \cup \left\{ z \right\}$
  莫隊維護對稱差。
3. 可撤銷莫隊
  「BZOJ 4358」permu:求區間最長值域連續段。
定期重構
1. 朝鮮樹,帶插入的 Kd-tree 。


Sdchr

天上下,我獨尊,觀自在,守本心。

隨筆 - 17 文章 - 0 評論 - 2

天上下,我獨尊,觀自在,守本心。

隨筆 - 17 文章 - 0 評論 - 2

分塊

1. 「TH 2517」數顏色

  單點修改,區間不同數個數,強制在線。

2. 「SPOJ UNTITLE1」

  n <= 5e5 ,區間增加等差數列,區間最值。

  區間修改、區間查詢是一類經典問題,數據結構的做法通常是劃分為若幹個子區間,若子區間的信息能夠合並,則使用線段樹,否則三分,不需要二分。

塊狀鏈表

1. 「BZOJ 3065」帶插入區間第 K 小

  塊的分塊

1. 給定一個長度為 n(1e5) 的序列 a[1], a[2], ..., a[n] .

  m(1e5) 組詢問 (l, r, K) , 求區間 [l, r] 去除重復的數之後的第 K 小.

分塊

1. 「2013 年國家集訓隊論文」

  給 n 個字符串 ti ,支持合並,或者查詢字符串 s 中出現過多少個字符串 ti 。

2. 「2013 年國家集訓隊論文」

  給 n 個區間 [li, ri] ,m 組詢問 [l, r] ,求與 [l, r] 相交的最長連續子序列的長度。

按質因子分塊

1. 「AGC 003D」Anticube

  K 補數:定義,求解,平衡規劃至 $W ^ {\frac{1}{3}}$ 。

2. 「POI 2010」Divine Divisor

  給 n = a1 * a2 * a3 * ... * am ,m <= 600, ai <= 1e18 。求最大的 K ,存在完全 K 次方因子,並求出此時完全 K 次方因子的個數。

  類似 AGC 003D 的做法。將因子分解完之後,取最大次數即可。設 W = 1e6 ,對 W 以內的進行分解,剩下最多只能再分解兩次,有三種可能:p, pq, p^2 ,對 p^2 直接判掉,求兩兩 gcd 嘗試將 pq 進行分解,否則 pq 作為整體考慮,權重為 2 。

3. 「TH 2603」乘積

  選擇 K 個不超過 N(500) 的正整數,乘積為無平方因子數,問選擇方案數。

分塊

1. 「TH 1021」邊學圖論邊染色

  n 點 m 帶權邊無向圖,點權 0 和 1 ,要麽將某個點的顏色改變,要麽詢問所以 x - y 邊的邊權和。

  重點擅長枚舉點、枚舉重點到重點的邊,輕點擅長枚舉邊,邊要去重。

莫隊算法

1. 帶修改莫隊

  $A = \left\{ a_1, a_2, ..., a_n \right\}$ ,單點修改,詢問區間不同數個數。

2. 樹上莫隊

  入棧出棧序的性質:

  1. 當 x 是 y 的祖先時,$\Delta [in(x), in(y)] = path(x, y)$

  2. 當 x 和 y 沒有祖先關系,$out(x) < in(y)$ 時,設 $z = LCA(x, y)$ ,則 $\Delta [out(x), in(y)] = path(x, y) \cup \left\{ z \right\}$

  莫隊維護對稱差。

3. 可撤銷莫隊

  「BZOJ 4358」permu:求區間最長值域連續段。

定期重構

1. 朝鮮樹,帶插入的 Kd-tree 。

posted @ 2017-11-30 10:05 Sdchr 閱讀(...) 評論(...) 編輯 收藏 刷新評論刷新頁面返回頂部 Copyright ©2018 Sdchr

[轉]分塊