問題 O 奇數碼問題(求逆序數,樹狀陣列)

2021-09-26 06:41:17 字數 1249 閱讀 1016

題目

思路:利用結論兩個數碼的逆序數奇偶性相同即可變為相同的局面,否則不可

updata()和getsum()是樹狀陣列的更新和求和操作,slove()是求逆序數的函式

#include

#include

#include

using namespace std;

int n,c[

300005];

inline

intlowbit

(int x)

void

updata

(int x,

int k)

///建樹狀陣列,在x位置上加k,更新樹

intgetsum

(int x)

///獲取區間(1,x)的和

intslove()

return cnt&1;

}int

main()

return0;

}

求逆序數模板1

#include

#include

using namespace std;

const

int maxn =

100000

+100

;double a[maxn]

;long

long

solve

(int l,

int r)

return ans;

}int

main()

求逆序數模板2

#include

#include

using namespace std;

const

int maxn=

100005

;int n;

long

long c[maxn]

;struct node

a[maxn]

;bool cmp

(node a,node b)

intlowbit

(int x)

void

updata

(int x)

long

long

query

(int x)

void

slove()

cout<}int

main()

奇數碼問題 逆序數

時間限制 1 sec 記憶體限制 128 mb 提交 69 解決 23 提交 狀態 討論版 命題人 admin 題目描述 你一定玩過八數碼遊戲,它實際上是在乙個3 3的網格中進行的,1個空格和1 8這8個數字恰好不重不漏地分布在這3 3的網格中。例如 5 2 8 1 3 4 6 7 在遊戲過程中,可...

逆序對 cofun1917 奇數碼問題

description 你一定玩過八數碼遊戲,它實際上是在乙個33的網格中進行的,1個空格和1 8這8個數字恰好不重不漏地分布在這33的網格中。例如 5 2 8 1 3 4 6 7 在遊戲過程中,可以把空格與其上 下 左 右四個方向之一的數字交換 如果存在 例如在上例中,空格可與左 上 下面的數字交...

CH0503 奇數碼問題 逆序對

此題有結論 兩個局面可以互達的充要條件是寫出一列去掉 0 00 後,逆序對數奇偶性相同。因為有奇數列,可以發現,無論怎麼移動,逆序對數的奇偶性不發生改變,然而其充分性不易證明,記住即可。include include inline intread const int maxn 505 int n,b...