題意:
n(5*10^5)個不同的數字組成的序列a 尋找滿足如下約束條件的數字組數: i1思路:
明顯考察的是nlogn的算法 我們發現其實ai1和ai2可以放在一起考慮 同理ai3和ai4 這兩組並沒有相互影響
我們來看答案是怎麼構成的 假設枚舉i3的位置 那麼我們希望知道“i3後面有幾個數大於ai3” 這個可以通過樹狀數組處理
同理假設我們知道i2也希望知道“i2前面有幾個數小於ai2” 這個也可以樹狀數組
那麼再利用i3>i2 則答案就可以表示為 sum( num(>ai3) * sum( num(
代碼:
#include
#include
#include
#include
#include
#include