樹狀陣列的修煉 疑惑篇

2022-06-03 05:21:15 字數 1169 閱讀 8347

洛谷p2345

奶牛叫不出の痛

1 #include2

#define ll long long

3using

namespace

std;

4const

int maxn = 2e5 + 10;5

intn;

6 ll cnt[maxn];//

cnt[i]表示i位置及其左側牛的個數

7ll sum[maxn];

8 ll res = 0

;9 ll mx = 0;10

struct

cow11

16};

17cow a[maxn];

1819

int lowbit(int

x)20

2324

void updcnt(int x, int

val)

2529}30

31void updsum(int

x, ll val)

3236}37

38 ll getcnt(int

x)39

44return

tmp;45}

4647 ll getsum(int x)//

求原點到x的所有存在的點的距離

4853

return

s;54}55

56int

main()

62 sort(a + 1, a + n + 1

);63

64 updcnt(a[1].x, 1

);65 updsum(a[1].x, a[1

].x);

66for(int i = 2 ; i <= n ; i++)

73 printf("

%lld\n

",res);

7475

return0;

76 }

上來糾結了一會,但還是有點思路方向的。

將距離分類為該點左側以及右側進行處理。

每次更新一頭奶牛,分別用樹狀陣列維護記錄cnt和sum,寫兩個upd和get。

但是**就是想半天寫不出。很棘手的問題。。。或許是因為思路不夠清晰?還是要明確維護操作的細節才行啊。

欸。。。繼續刷題(研究題解)吧

樹狀陣列(總結篇)

by zyq 2014 7 樹狀陣列何其牛逼只能這麼形容啊。首先,網上好多對樹狀陣列基礎知識講解的在這就不細講了。可以參考 內容比較老了 下面總結一下樹狀陣列的題型 1.最簡單的單點更新區間查詢 其實這個是樹狀陣列的精髓了,不過入門的時候都會做些簡單題找感覺吧。下面附上簡單題找感覺,動腦子的題後面貼...

樹狀陣列總結篇

傳送門 題意 在日本的東海岸和西海岸修交通線,問這些交通線有多少交叉點 解法 按照x座標公升序,相同的情況下y公升序排序,然後查詢在之前有多少滿足條件的即可 include include include include define n 1005 define ll long long using...

樹狀陣列 小白篇(1)

身為一名弱省oier中的mengbier,簡單講一下我是怎麼學會基礎的樹狀陣列的 不算華麗的分割線 主要用於查詢任意一段資料中的所有元素之和。經過簡單修改可以在log n 的複雜度下進行範圍修改。也就是說你通過一系列神奇的操作可以實現在乙個數列中,修改其中一項ax的值 還可以是一段 並求出前n項和 ...