題解 洛谷P2357 守墓人

2022-05-16 10:40:32 字數 2056 閱讀 2782

portal1: luogu

在乙個荒涼的墓地上有乙個令人尊敬的守墓人,他看守的墓地從來沒有被盜過, 所以人們很放心的把自己的先人的墓安頓在他那守墓人能看好這片墓地是必然而不是偶然.....

因為....守墓人懂風水。他把墓地分為主要墓碑和次要墓碑,主要墓碑只能有\(1\)個, 守墓人把他記為\(1\)號, 而次要墓碑有\(n-1\)個,守墓人將之編號為\(2, 3 \dots n\),所以構成了乙個有\(n\)個墓碑的墓地。

而每個墓碑有乙個初始的風水值,這些風水值決定了墓地的風水的好壞,所以守墓人需要經常來查詢這些墓碑。

善於運用風水的守墓人,通過一次次逆天改命,使得自己擁有了無限壽命,沒人知道他活了多久。

這天,你幸運的拜訪到了他,他要求你和他共同見證接下來幾年他的戰果,但不過他每次統計風水值之和都需要你來幫他計算,算錯了他會要你命qaq,風水也不是不可變,除非遭遇特殊情況,已知在接下來的\(2147483647\)年裡,會有\(n\)次災難,守墓人會有幾個操作:

將\([l,r]\)這個區間所有的墓碑的風水值增加\(k\);

將主墓碑的風水值增加\(k\);

將主墓碑的風水值減少\(k\);

統計\([l,r]\)這個區間所有的墓碑的風水值之和;

求主墓碑的風水值。

上面也說了,很多人會把先人的墓安居在這裡,而且守墓人活了很多世紀,墓碑的數量會多的你不敢相信,守墓人和善的邀請你幫他完成這些操作,要不然哪天你的旅館**了,天上下刀子\(\dots \dots\)為了活命,還是幫他吧。

第一行,兩個正整數\(n, f\)表示共有\(n\)塊墓碑,並且在接下來的\(2147483647\)年裡,會有\(f\)次世界末日;

第二行,\(n\)個正整數,表示第\(i\)塊墓碑的風水值;

接下來\(f\)行,每行都會有乙個針對世界末日的解決方案,如題所述,標記同題。

輸出會有若干行,對\(4\)和\(5\)的提問做出回答。

5 7

0 0 0 0 0

1 1 5 1

1 1 3 3

2 33 1

4 1 5

2 15

16

7

\(20\%\)的資料滿足:\(1 \le n \le 100\);

\(50\%\)的資料滿足:\(1 \le n \le 6000\);

\(100\%\)的資料滿足:\(1 \le n, f \le 2 \times 10^\);

這題樹狀陣列。

c1來維護和,c2來維護積。

對於詢問\([x, y]\)區間,可以用query(y) - query(x - 1) + (x == 1) * 主墓碑的風水值來求值,其中query(y) - query(x - 1)類似於字首和,(x == 1) * 主墓碑的風水值表示\([x, y]\)區間包不包含主墓碑,如果包含則加上主墓碑單獨維護的。

其中主墓碑需要單獨維護。

#include#include#include#include#includeusing namespace std;

typedef long long ll;

const int maxn = 500005;

int n, m, last;

ll first_value, c1[maxn], c2[maxn];

inline int lowbit(int x)

inline void update(int x, ll val)

}inline ll query(int x)

int main()

while (m--) else

if (opt == 2) else

if (opt == 3) else

if (opt == 4) else printf("%lld\n", query(1) + first_value);//統一維護的加單獨維護的

}return 0;

}

洛谷P2357 守墓人

在乙個荒涼的墓地上 有乙個令人尊敬的守墓人,他看守的墓地從來 沒有被盜過,所以人們很放心的把自己的先人的墓 安頓在他那 守墓人能看好這片墓地是必然而不是偶然.因為.守墓人懂風水 0.0 他把墓地分為主要墓碑和次要墓碑,主要墓碑 只能有 1 個,守墓人把他記為 1 號,而次要墓碑有 n 1 個,守墓人...

洛谷 P2357 守墓人

在乙個荒涼的墓地上 有乙個令人尊敬的守墓人,他看守的墓地從來 沒有被盜過,所以人們很放心的把自己的先人的墓 安頓在他那 守墓人能看好這片墓地是必然而不是偶然.因為.守墓人懂風水 0.0 他把墓地分為主要墓碑和次要墓碑,主要墓碑 只能有 1 個,守墓人把他記為 1 號,而次要墓碑有 n 1 個,守墓人...

洛谷P2357 守墓人 線段樹

如果普通暴力做 肯定過不了 那麼我們就要考慮 更高效的 資料結構 比如分塊 線段樹 樹狀陣列等 然後就可以用線段樹過了 要加laz ylazy lazy 標記 比分塊快200ms 200ms 200m s至於主墓的風水和 題目說它是編號1 11 那其實就是區間 1,1 1,1 1,1 的風水和了 就...