題目位址
下面兩種方法均先處理離散化。
求逆序對,倒序插入:插入乙個,統計比它小的數量,即ask(1,a[i]-1)。
順序也行ask要變
#include
#include
#include
using
namespace std;
const
int n =
5e5+10;
typedef
long
long ll;
#define lowbit(x) (x & -x)
ll c[n]
,a[n]
,n;vector b;
intfind
(int x)
void
update
(int x,
int v)
intask
(int x)
intmain()
cout
}
維護區間的和,插入乙個後,統計比它(大/小的數量)看順序還是逆序。
#include
#include
#include
using
namespace std;
const
int n =
5e5+10;
typedef
long
long ll;
ll a[n]
,n;vector b;
#define l(x) t[x].l
#define r(x) t[x].r
#define ans(x) t[x].ans
struct segmenttreet[n*4]
;int
find
(int x)
void
push_up
(int p)
void
build
(int p,
int l,
int r)
void
update
(int p,
int x,
int v)
int mid =(l
(p)+
r(p)
)>>1;
if(x <= mid)
update
(p*2
,x,v)
;else
update
(p*2+1
,x,v)
;push_up
(p);
}ll ask
(int p,
int l,
int r)
intmain()
cout
}
洛谷P1774 最接近神的人
用類似於桶的方法,樹狀陣列記錄原序列的某位置之前已經插入了多少個數,插入時樹狀陣列單點加1即可 先排一遍序,從大到小插入所有數在原序列的位置,統計每次插入時,在該元素前面元素的個數,前面的元素是先插入的,比該元素大,而在序列中的位置靠前,所以這個字首和是逆序對數 include include in...
P1774 最接近神的人
這個人當然是我啦,皮 破解了符文之語,小ff開啟了通往地下的道路。當他走到最底層時,發現正前方有一扇巨石門,門上雕刻著一幅古代人進行某種活動的圖案。而石門上方用古代文寫著 神的殿堂 小ff猜想裡面應該就有王室的遺產了。但現在的問題是如何開啟這扇門 仔細研究後,他發現門上的圖案大概是說 古代人認為只有...
洛谷P1298 最接近的分數
給出乙個正小數,找出分子 非負 不超過m,分母不超過n 正數 的最簡分數或整數,使其最接近給出的小數。最接近 是指在數軸上該分數距離給出的小數最近,如果這個分數不惟一,輸出 too many 輸入格式 輸入檔案共有二行,第一行包含兩個用空格隔開的正整數m和n 1 m,n 107 表示要求的分數其分子...