洛谷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項和 ...