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

2022-03-06 22:48:26 字數 1105 閱讀 4894

在dota遊戲中,帕吉的肉鉤是很多英雄最害怕的東西。鉤子由連續若干段的等長金屬棒製成。

現在帕吉對鉤子由一些操作:

我們將金屬棒1~n依次編號,帕吉可以把編號x~y的金屬棒變成銅棒、銀棒、金棒。

每段銅棒的價值是1;每段銀棒的價值是2;每段金棒的價值是3。

肉鉤的總價值是n段金屬棒價值之和。帕吉想知道若干操作以後鉤子的總價值。

輸入格式

第一行乙個整數n(1≤n≤105),表示肉鉤金屬棒的數量,初始狀態為銅棒。

第二行乙個整數q(1≤q≤105),表示運算元。

接下來q行,一行三個整數,x,y,z(1≤x≤y≤n,1≤z≤3)。

輸出格式

一行乙個整數,表示鉤子的總價值,用樣例中的格式。

**:

#includeusing namespace std;

int n,q;

const int max_n = 1e5+5;

int s[4 * max_n],col[4 * max_n];

//父節點合併

void up(int p)

//向下更新一層 區間更新使用延遲更新的思想提高效率

void down(int p, int l, int r)

}//更新

void modify(int p,int l,int r,int x,int y,int v)

down(p, l, r);//向下更新一層

int mid = (l + r)/2;

if(x <= mid)

if(y > mid)

up(p);

}//查詢

int query(int p,int l,int r,int x,int y)

down(p,l,r);//如果沒有return,這時子節點必須更新了 就向下更新一層

int mid = (l + r) / 2, res = 0;

if(x <= mid)

if(y > mid)

return res;

}int main()

while(q--)

cout<

return 0;

}

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

分析題意,是一道典型的線段樹題目.要求做到區間賦值 樹狀陣列應該無法做到 區間求和兩個操作.開始的時候思路不清楚,後來要注意線段樹的 up 和 down 操作.需要注意的是有lazy tag的節點,它本身的資訊是完全正確的,子節點的資訊是待更新的.這也就是說,當需要用到這些子節點的資訊時在進行更新....

計蒜客 區間包含 活動安排問題

已知 n 個左閉右開區間 a b 對其進行 m 次詢問,求區間 l r 最多可以包含 n 個區間中的多少個區間,並且被包含的所有區間都不相交。輸入格式 輸入包含多組測試資料,對於每組測試資料 第一行包含兩個整數 n m 1 n m 100000 接下來 n 行每行包含兩個整數 a b 0 a b 1...

計蒜客 合併石子 區間dp

題目鏈結 題解 leetcode裡面有個戳氣球的題和這個類似,用區間dp來解。由於n堆 n 2 石子合併,最終一定會有個只剩2堆石子的中間狀態,這個狀態就是突破口。最終的2堆石子一定是在原來的石子裡面連續的,可以用dp i j 表示區間i.j的石子合併後最小的體力消耗,n堆石子消耗的最小體力為dp ...