HDU 4417 (二分 區間第k大)

2021-07-15 05:19:09 字數 660 閱讀 1040

查詢區間【l,r】中有多少數 比給定的 h 小。

我們可以這麼想, h 一定會比 區間的第 x 大 ,第 x +1 小。

怎麼確定 x。

這是乙個單調的問題, 所以二分 + 區間第 k 大就可以確定了。

#include 

#include

#include

#include

using

namespace

std;

const

int maxn = 100000 + 131;

int sorted[maxn];

int tree[30][maxn];

int toleft[30][maxn];

void build(int l, int r, int dep)

build(l,mid,dep+1), build(mid+1, r, dep+1);

}int query(int l, int r, int l, int r, int dep, int k)

else

}int main()

else r = mid - 1;

}printf("%d\n",ans);}}

return

0;}

hdu 5875(ST 二分區間)

題意 給乙個序列,有n個數字和m次詢問。每次詢問給乙個區間,問這個區間從l開始一直對l後面的陣列取模,一直到r。分析 乙個較小的數字對乙個較大的數字取模,值不發生改變。所以每次只要找最近的比自己小的數字取模更新答案即可。用rmq維護區間最小值。每次查詢乙個區間就在這個區間內進行二分。如果左區間有比l...

整體二分 區間第 K 小(大)問題 詳解

整體二分是乙個求解區間第k小 大 非常優秀的演算法,但是要求離線處理,對於所有詢問做整體的二分答案操作。相較於主席樹 樹套樹,整體二分 應該 更加優秀。我用主席樹與整體二分寫,並沒有發現在時間上整體二分快多少,我自己算時間複雜度也覺得兩者差不多 也可能我寫的太醜了 但是空間上整體二分當然非常佔優 上...

HDU 4768 (二分區間 漲姿勢)

題意 告訴n組a,b,c,按照a k c生成等差數列,問這n組數列中哪個數字出現了奇數次以及出現了幾次,題目保證最多隻會出現乙個這種數字。分析 讀完題並沒有思路,後來知道是二分區間,列舉是哪個數字出現了奇數次,算該數字之前一共有幾個數字,如果是奇數個,說明答案就在 l mid 中。ps 之前用二分只...