其實是想複習樹狀陣列和歸併排序
cdq分治noip考完再說
採用分治策略,分而治之,直接上原理圖
看上去像個完全二叉樹,所以遞迴解決,復l雜度nlog2n
遞迴分到最後,只有乙個元素顯然是有序的,這時候再進行二路歸併,具體如下圖
上**(逆序對)
#includeusingview codenamespace
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;
}
然後你就學會啦
這個要不專門講吧
cdq分治
離散化+歸併排序降維打擊+樹狀陣列計數
具體的退役了再完善吧
上**
#includeusingview codenamespace
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;
}
紅塵深處,陌上花開
有人說 乙個人是詩,兩個人是畫 默默地誦讀這句,意蘊全出。畫裡有詩,詩中有畫。在詩與畫中尋求自我,然後柔情,淡泊,超然。乙個人的世界,乙個人的雅緻。在萬千情愫的月光裡追尋塵世中曾經擦肩而過的佳人,回憶便從眉梢掠過,縈繞迴旋,傷心與歡樂都隨著冷俊的清風消失。剩下純一色的的感悟瀰漫在骨子裡,經得起風雲煙...
陌上花開 CDQ分治
cdq分治 從來都沒有聽說過,寫了這題才知道還有這麼神奇的演算法。被逼無奈 w w 於是看了不少dalao的部落格,對cdq演算法粗淺地了解了一點。想要了解cdq的概念,可以看下這位dalao的部落格 所以,這道題要怎麼做呢。根據,cdq分治理論,這題按照題意建出來儲存資訊的陣列很明顯是個三維的。很...
陌上花開,你還在嗎
你說過的,只願和我水木清華,婉兮清揚。寫在最前 城破,血光沖天,你坐在馬上。父皇說,你是西域的王子,是送來的質子。那時我立在父皇身旁,端起一盞茶,歪頭問質子是什麼。父皇撫了撫我的頭,笑著說,只不過是西域為了示忠,才甘心將自己的兒子送來京都。我從父皇的眼中看到一絲不屑,撇撇嘴,認為你定是個可憐人,父王...