1 13 樹狀陣列專練總結

2022-07-02 08:18:07 字數 2388 閱讀 9729

wtclwtcl!!!

t3卡了乙個半小時寫不出來,結果聽評講是個逆序對(???)

t1 nkoj4866 和諧數

題目大意:乙個長度為n的序列,對於第i個數字,設左邊比它大的有x個,右邊比它大的有y個,若max(x, y) > 2 * min(x, y),則這個數不和諧。求數列中不和諧數字的總數。

解法:正序一遍樹狀陣列,倒序一遍樹狀陣列即可。

#include using

namespace

std;

int a[100005], b[100005], c[100005], ans1[100005], ans2[100005

], n;

void modify(int x, int

p)int query(int

x)int

main()

sort(b + 1, b + n + 1

);

int tot = unique(b + 1, b + n + 1) - b - 1

;

for (int i = 1; i <= n; i++)

for (int i = 1; i <= n; i++)

memset(c,

0, sizeof

(c));

for (int i = n; i; i--)

int sum = 0

;

for (int i = 1; i <= n; i++)

printf("%d

", sum);

}

t2 nkoj4224 矩陣計數

題解:裸的二維樹狀陣列。

#include using

namespace

std;

int a[305][305], c[305][305][105

], n, m;

void modify(int x, int y, int k, int

p) }

}int query(int x, int y, int

k) }

return

sum;

}int

main()

}int q; scanf("

%d", &q);

for (int i = 1, type, k; i <= q; i++)

else

}}

t3(訂正) nkoj4223 彩色方塊

題面:何老闆最近在玩一款叫「彩色方塊」的小遊戲,遊戲雖然簡單,但何老闆仍舊樂此不疲。

遊戲中有n個彩色方塊成一排,方塊的顏色用字母表示,給出目標排列,只要把它們排成跟目標一樣的排列,就算過關。每次操作只能交換相鄰兩個方塊。

給出一關遊戲,何老闆想知道,最少操作幾次就能過關,請你幫他計算最少所需的操作步數。

解法:用26個佇列給字母編號,然後求逆序對即可。

#include using

namespace

std;

#define ll long long

const ll maxn = 1000005

; queue

q[120

];ll a[maxn], b[maxn], c[maxn], d[maxn], mark[maxn], nxt[maxn], head[maxn], n, ans;

#define lowbit(i) i & (-i)

void

modify(ll x, ll k)

ll querysum(ll x)

ll read()

main()

for (ll i = 1; i <= n; i++)

printf(

"%lld

", ans);

return0;

}

t4:nkoj4875 字首字首和

題目大意:單點修改,求字首和的字首和。

題解:就類似樹狀陣列區間修改,區間查詢的方式維護即可。

#include using

namespace

std;

#define ll long longll a[

100005], c[100005], n, m, d1[100005], d2[100005

];#define lowbit(i) i & (-i)

void

modify(ll x, ll k)

ll querysum(ll x)

return sum1 -sum2;

}main()

string

ch;

while (m--)

else

}}

樹狀陣列總結

樹狀陣列的基本知識已經被各種大牛和菜鳥講到爛了,我就不多說了,下面給出基本操作的 假定原陣列為a 1.n 樹狀陣列b 1.n 考慮靈活性的需要,使用int a傳陣列。define lowbit x x x int sum int a,int x void update int a,int x,int...

樹狀陣列總結

樹狀陣列是對乙個陣列改變某個元素和求和比較實用的資料結構。兩中操作都是o logn 在解題過程中,我們有時需要維護乙個陣列的字首和s i a 1 a 2 a i 但是不難發現,如果我們修改了任意乙個a i s i s i 1 s n 都會發生變化。可以說,每次修改a i 後,調整字首和s在最壞情況下...

樹狀陣列總結

今天學習了一下樹狀陣列,做乙個簡單總結。樹狀陣列可分為兩種操作,1 修改單個點,統計區間和 一般為 向上修改 update1 向下統計 sum1 2 修改區間,統計單個點 一般為向下修改 update2 向上統計 sum2 主要模板如下 int c n int lowbit int x 用於確定區間...