用類似於桶的方法,樹狀陣列記錄原序列的某位置之前已經插入了多少個數,
插入時樹狀陣列單點加1即可
先排一遍序,從大到小插入所有數在原序列的位置,
統計每次插入時,在該元素前面元素的個數,
前面的元素是先插入的,比該元素大,而在序列中的位置靠前,
所以這個字首和是逆序對數
#include#include#include
using
namespace
std;
#define int long long
#define lowbit(x) ((x)&(-(x)))
#define maxn 500020inline
intread()
while('0'
<=c&&c<='
9')
return x*f;
}int n,tree[maxn<<2
];struct
node x[maxn];
inline
bool
cmp(node x,node y)
void update(int
x)int query(int
x)#undef int
intmain()
#define int long long
sort(x+1,x+1+n,cmp);
int ans=0
;
for(int i=n;i>=1;i--)
printf(
"%lld\n
",ans);
return0;
}
P1774 最接近神的人
這個人當然是我啦,皮 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題是如何開啟這扇門 仔細研究後,他發現門上的圖案大概是說 古代人認為只有...
最接近神的人 洛谷p1774 逆序對三種求法
題目位址 下面兩種方法均先處理離散化。求逆序對,倒序插入 插入乙個,統計比它小的數量,即ask 1,a i 1 順序也行ask要變 include include include using namespace std const int n 5e5 10 typedef long long ll ...
t099 最接近神的人
time limit 1 second memory limit 128 mb 問題描述 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活 動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題...