牛客網多校5 H subseq (樹狀陣列)

2021-08-22 07:07:45 字數 816 閱讀 4947

題目:給定乙個序列 a[1..n],求下標字典序第 k 小的嚴格遞增子串行  1<=n<=10^5    0<=k<=10^(18)

思路:考慮逐位確定,每次大概要算 a[i…n] 中,第一項 >=x 的嚴格遞增子串行的個數,這個可以用乙個可持久化線段樹或者樹狀陣列維護。

#include using namespace std;

typedef long long ll;

const int maxn=5e5+10;

const ll inf=1e18+1;

int n,b[maxn],a[maxn];

ll m,c[maxn],num[maxn];

int lowbit(int x)

void update(int pos,ll val)

}ll query(int pos)

pos+=lowbit(pos);

}return ans;

}int main()

sort(b+1,b+n+1);

int o=unique(b+1,b+n+1)-b-1;

for(int i=1;i<=n;i++)

a[i]=lower_bound(b+1,b+o+1,a[i])-b;

memset(c,0,sizeof c);

for(int i=n;i>0;i--)

vectorv;

int i=0;

while(i<=n)

}if(m==0)

else puts("-1");

return 0;

}

牛客網多校5 I vcd (樹狀陣列)

題目 有 n 個點,乙個點集 s 是好的,當且僅當對於他的每個子集 t,存在乙個右邊無限長的矩形,使得這個矩形包含了 t,但是和 s t 沒有交求這 n 個點裡有幾個好的點集 1 n 10 5 思路 對於 s 1,他顯然是好的 對於 s 2,只要兩個點的 y 座標不相同,那麼這個集合也是好的 對於 ...

2018牛客多校第五場 H subseq

傳送門 這場樹狀陣列用法專場,skydec說這題很套路的題,很簡單,然而處理處dp陣列後最後的貪心我想了半天還問了一蛤別人,菜不成聲.jpg,先處理出dp陣列,dp i 表示以a i 為開頭的從i到n的所有遞增子串行的方案數,本來應該用線段樹了,然而好多人使用了神奇的樹狀陣列,以前都是add函式從i...

牛客網多校5 A gpa

輸入 第一行n,k 第二行n個s i 第三行n個c i 最多剪掉k個數使 答案用二分找,做題時想到過,但沒有仔細去想。假設max已知 s i c i s i c i max s i s i 即 s i c i ma x s i c i max 0,只需要每次按 c i max 排序,從k 1開始加到...