計蒜客 樹狀陣列線段樹 帕吉的肉鉤

2021-08-21 15:35:17 字數 1275 閱讀 6993

分析題意, 是一道典型的線段樹題目.

要求做到區間賦值(樹狀陣列應該無法做到), 區間求和兩個操作.

開始的時候思路不清楚, 後來要注意線段樹的 up 和 down 操作.

需要注意的是有lazy-tag的節點, 它本身的資訊是完全正確的, 子節點的資訊是待更新的.

這也就是說, 當需要用到這些子節點的資訊時在進行更新.

#include #include #include #include #include using namespace std;

const int maxn = 1e5 + 600;

int s[maxn << 2 | 1];

int flag[maxn << 2 | 1];

int n;

int ql, qh, v;

inline void up(int o)

inline void down(int o, int lo, int hi)

}void build(int o, int lo, int hi)

int mi = lo + (hi - lo >> 1);

build(o << 1, lo, mi);

build(o << 1 | 1, mi, hi);

up(o);

}int query(int o, int lo, int hi)

if(qh <= lo || hi <= ql)

return 0;

down(o, lo, hi);

int rst = 0, mi = lo + (hi - lo >> 1);

rst += query(o << 1, lo, mi);

rst += query(o << 1 | 1, mi, hi);

return rst;

}void modify(int o, int lo, int hi)

if(qh <= lo || hi <= ql)

return;

down(o, lo, hi);

int mi = lo + (hi - lo >> 1);

modify(o << 1, lo, mi);

modify(o << 1 | 1, mi, hi);

up(o);

}int main()

ql = 1, qh = n;

printf("the total value of the hook is %d.\n", s[1]);

return 0;

}

計蒜客 帕吉的肉鉤 區間更新 區間和

在dota遊戲中,帕吉的肉鉤是很多英雄最害怕的東西。鉤子由連續若干段的等長金屬棒製成。現在帕吉對鉤子由一些操作 我們將金屬棒1 n依次編號,帕吉可以把編號x y的金屬棒變成銅棒 銀棒 金棒。每段銅棒的價值是1 每段銀棒的價值是2 每段金棒的價值是3。肉鉤的總價值是n段金屬棒價值之和。帕吉想知道若干操...

計蒜客 項鍊 (主席樹 離線 樹狀陣列)

題目大意就跟洛谷的hh項鍊一樣,但是求一串區間內不重複數字的和。一種做法是離線 樹狀陣列,這裡不講。主要講一下新學習的技能,用主席樹搞區間內不重複的數字 個數或者和 由於洛谷那個寫炸了,一直mle 不知道被什麼資料卡了 只好拿計蒜客上面的題來試一下,結果計蒜客的能過。主席樹做法和樹狀陣列相同,對於同...

計蒜客 管家的忠誠 線段樹

老管家是乙個聰明能幹的人。他為財主工作了整整10年,財主為了讓自已賬目更加清楚。要求管家每天記k次賬,由於管家聰明能幹,因而管家總是讓財主十分滿意。但是由於一些人的挑撥,財主還是對管家產生了懷疑。於是他決定用一種特別的方法來判斷管家的忠誠,他把每次的賬目按1,2,3 編號,然後不定時的問管家問題,問...