HDU6534 離散化 樹狀陣列 莫隊

2021-09-24 04:03:54 字數 691 閱讀 5100

題目:

題意:給一段序列,27000次詢問l到r區間有多少對(i,j)(i分析:首先分析可知,每增加乙個數x,答案就會增加num(x−k<=i<=x+k),減少同理減少這麼多。所以離散化+莫隊+樹狀陣列就完事了,總複雜度o(

ac code:

#includeusing namespace std;

const int maxn=1e5+5;

typedef long long ll;

ll ans,k;

struct node

;node q[maxn];

int c[maxn];

int a[maxn];

vectorb;

int lpos[maxn],rpos[maxn];

int belong[maxn];

int lowbit(int x)

ll getsum(int x)

return ans;

}void update(int x,int val)

}bool cmp1(node &a,node &b)

sort(q+1,q+m+1,cmp2);

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

printf("%lld\n",q[i].ans);

return 0;

}

HDU 3743 樹狀陣列,離散化

其實,我也知道這道題是求逆序數來做的,但是問題來了,怎麼求逆序數,常規的解法肯定是不行的,因為資料量很大,那麼想到能用線段樹來做,是可以的,不過我還沒敲過,既然在看樹狀陣列就用這個做。又因為資料可以達到一百萬,並且資料又用不到,所以可以對資料進行離散化 include include include...

hdu 5877(樹狀陣列 離散化)

題意 查詢節點與它的父親節點相乘小於k的種類數。思路 用乙個樹狀陣列維護,查詢的話就是它的父親節點小於k a i 的個數。當跑完這個分支之後,要對他進行清除操作。ps 數比較大,需要離散化。include include include include include include include...

離散化 樹狀陣列

題目描述 erwin最近對一種叫 thair 的東西巨感興趣。在含有n個整數的序列a1,a2 an中,三個數被稱作 thair 當且僅當i求乙個序列中 thair 的個數。輸入格式 開始乙個正整數n,以後n個數a1 an。輸出格式 thair 的個數 思路 列舉中間的數字,求排在它前面,小於它的有幾...