HNOI模擬 K小數查詢

2021-07-11 04:33:44 字數 1104 閱讀 3182

用什麼

一眼看上去就像乙個資料結構,但是好像很複雜。

看看能幹什麼先!

能支援區間找名次,支援修改。

不知道treap可不可以做,不過區間維護名詞好像不行吧。

發現範圍十分的小,分塊**好。

怎麼做

對每一塊排乙個序,維護乙個加號的標記就可以了。

#include

#include

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

const

int maxn=80007;

using

namespace

std;

int i,j,k,l,t,n,m,ans,a[maxn],o;

int b[405][405],jia[405],shu[maxn],chang[maxn],kua;

/*int read()

while(ch>='0'&&ch<='9')

return x*f;

}*/void build(int x)

sort(b[x]+1,b[x]+chang[x]+1);

}int erfen(int x,int y)

return l;

} int pan(int x,int l,int r)

fo(i,shu[l]+1,shu[r]-1)

fo(i,l,kua*shu[l])

if(a[i]+jia[shu[l]]1)+1,r)

if(a[i]+jia[shu[r]]return k;

}int main()

fo(i,1,shu[n])

scanf("%d",&m);

fo(j,1,m)

else

}else

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

}

HNOI2016模擬4 10 K小數查詢

維護乙個長度為n的序列,使得其支援m次操作,包括區間插入和區間求k小數。n,m 80000,在任何時候 ai 5000000 一看到區間第k大 小,就想到了主席樹。但這個是區間修改!怎麼做呢?分塊 好 觀察到時限7s,果斷上分塊。複雜度好不科學 分塊 好?用每乙個塊維護排過序後的塊和原來的塊,然後對...

HNOI2016模擬4 10 K小數查詢

維護乙個長度為n的序列,該序列支援q個操作 將第l到r個數加上x 詢問l到r之間第k小個數是什麼。看到實現時間7000ms,嘿嘿,果斷分塊打法。大呼 分塊 好 這題因為有區間加操作,直接用資料結構難以維護區間 k 小值。但是可以用 分塊解決此題。最簡單的方法是每個塊維護原塊和排序後的塊,詢問時二分答...

查詢第K小數

查詢乙個陣列的第k小的數,注意同樣大小算一樣大。如 2 1 3 4 5 2 第三小數為3。輸入描述 輸入有多組資料。每組輸入n,然後輸入n個整數 1 n 1000 再輸入k。輸出描述 輸出第k小的整數。輸入例子 6 2 1 3 5 2 2 3 輸出例子 3 import j a.util.array...