原題鏈結
線段樹, 每個節點儲存的資訊:左端點正面向上的最大長度和反面向上的最大長度,右端點正面向上的最大長度
和反面向上的最大長度
,該區間正面向上的最大長度
和反面向上的最大長度
,當然這裡的最大長度是連續的。
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 或...