陌上花開,可緩緩歸矣

2022-09-13 08:06:09 字數 1702 閱讀 6876

其實是想複習樹狀陣列和歸併排序

cdq分治noip考完再說

採用分治策略,分而治之,直接上原理圖

看上去像個完全二叉樹,所以遞迴解決,復l雜度nlog2n

遞迴分到最後,只有乙個元素顯然是有序的,這時候再進行二路歸併,具體如下圖

上**(逆序對)

#includeusing

namespace

std;

const

int maxn=5e5+10

;int

a[maxn],f[maxn];

long

long

p;void s(int l,int

r)else

}while(i<=m)

while(j<=r)

//將剩餘元素壓入

for(int q=l;q<=r;q++) a[q]=f[q];//

修改原陣列,保證後續歸併的正確性

}int

main()s(1

,n);

printf(

"%lld

",p);

return0;

}

view code

然後你就學會啦

這個要不專門講吧

cdq分治

離散化+歸併排序降維打擊+樹狀陣列計數

具體的退役了再完善吧

上**

#includeusing

namespace

std;

const

int n=2e5+100

;struct

node

e[n],g[n];

intd[n],n,k,cnt,ans[n];

int lowbit(int

x)void add(int x,inty)}

int find(int

x)

return

ans;

}bool

cmp(node x,node y)

else

return x.a

}void cdq(int l,int

r)

else

}while(h<=mid)

while(t<=r)

for(int i=l;i<=mid;i++)

add(g[i].c,-g[i].w);

for(int i=l;i<=r;i++)

g[i]=e[i];

}int

main()

sort(e+1,e+1+n,cmp);

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

else g[cnt].w++;

}cdq(

1,cnt);

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

for(int i=0;i)

cout

return0;

}

view code

紅塵深處,陌上花開

有人說 乙個人是詩,兩個人是畫 默默地誦讀這句,意蘊全出。畫裡有詩,詩中有畫。在詩與畫中尋求自我,然後柔情,淡泊,超然。乙個人的世界,乙個人的雅緻。在萬千情愫的月光裡追尋塵世中曾經擦肩而過的佳人,回憶便從眉梢掠過,縈繞迴旋,傷心與歡樂都隨著冷俊的清風消失。剩下純一色的的感悟瀰漫在骨子裡,經得起風雲煙...

陌上花開 CDQ分治

cdq分治 從來都沒有聽說過,寫了這題才知道還有這麼神奇的演算法。被逼無奈 w w 於是看了不少dalao的部落格,對cdq演算法粗淺地了解了一點。想要了解cdq的概念,可以看下這位dalao的部落格 所以,這道題要怎麼做呢。根據,cdq分治理論,這題按照題意建出來儲存資訊的陣列很明顯是個三維的。很...

陌上花開,你還在嗎

你說過的,只願和我水木清華,婉兮清揚。寫在最前 城破,血光沖天,你坐在馬上。父皇說,你是西域的王子,是送來的質子。那時我立在父皇身旁,端起一盞茶,歪頭問質子是什麼。父皇撫了撫我的頭,笑著說,只不過是西域為了示忠,才甘心將自己的兒子送來京都。我從父皇的眼中看到一絲不屑,撇撇嘴,認為你定是個可憐人,父王...