計蒜客 硬幣翻轉 線段樹

2021-07-26 18:41:24 字數 1013 閱讀 4102

原題鏈結

線段樹, 每個節點儲存的資訊:左端點正面向上的最大長度和反面向上的最大長度,右端點正面向上的最大長度

和反面向上的最大長度

,該區間正面向上的最大長度

和反面向上的最大長度

,當然這裡的最大長度是連續的。

lazy標記表示其子節點是否需要更新。

struct nodet[maxn];

ac**

#include#includeusing namespace std;

const int maxn = 4e5 + 5;

struct nodet[maxn];

void update(int cur)

void change(int cur)

void lazy_down(int cur)

void build(int l, int r, int cur)

int mid = (l + r) / 2;

build(l, mid, cur << 1);

build(mid + 1, r, (cur << 1) + 1);

update(cur);

//printf("%d %d %d\n",l , r, t[cur].a[1]);

}void update(int l, int r, int cur)

lazy_down(cur);

int mid = (ll + rr) / 2;

if(r <= mid) update(l, r, cur << 1);

else if(l >= mid + 1) update(l, r, (cur << 1) + 1);

else

update(cur);

}int getans(int l, int r, int cur)

}int main()

} return 0;

}

如有不當之處歡迎指出!

計蒜客 矩陣翻轉

曉萌最近在做乙個翻轉的應用,你可能也知道,其實是由乙個個的點組成的。於是,曉萌想先做乙個可以翻轉矩陣的程式,來解決他問題的核心部分。輸入第一行包括由空格分開的整數 m,n,t 0m,n,t 0m 20 0 tt t的值為 000 或 11 1。其中 mmm 和 nn n分別表示待處理矩陣的行數與列數...

計蒜客 矩陣翻轉C

曉萌最近在做乙個翻轉的應用,你可能也知道,其實是由乙個個的點組成的。於是,曉萌想先做乙個可以翻轉矩陣的程式,來解決他問題的核心部分。輸入第一行包括由空格分開的整數 m,n,t 0 n,m 200 t的值為 0 或 1。其中 m 和 n 分別表示待處理矩陣的行數與列數,t 為 0 時表示左右翻轉,為 ...

計蒜客 矩陣翻轉 題解

time 1000ms memory 65536k desc 曉萌最近在做乙個翻轉的應用,你可能也知道,其實是由乙個個的點組成的。於是,曉萌想先做乙個可以翻轉矩陣的程式,來解決他問題的核心部分。input fomat 輸入第一行包括由空格分開的整數 m,n,t 0 n,m 200 t 的值為 0 或...