UOJ169 UR 11 元旦老人與數列

2022-05-07 18:39:11 字數 1968 閱讀 3370

傳送門

考慮用 \(segment~tree~beats\) 那一套理論,維護區間最小值 \(mn\) 和嚴格次小值 \(se\)

那麼可以直接 \(mlog^2n\) 維護前三個操作

考慮維護歷史最小值,先維護歷史最小標記

寫了寫發現 \(max\) 那個修改不好操作

對於 \(max\) 操作來說,只會在 \(mn< v 的時候打上標記

這就相當於區間內等於 \(mn\) 的權值都要變成 \(v\)

那麼 \(max\) 操作就可以變成對區間最小值的加法操作

而 \(v,這樣就可以非常方便維護歷史最小值了

具體來說,維護下面幾個標記

區間最小值的加法標記

區間其它值的加法標記

區間最小值的歷史最小的加法標記

區間其它值的歷史最小的加法標記

下放的時候判斷一下是否是區間最小值就好了

# include using namespace std;

typedef long long ll;

namespace io

template inline void in(int &x)

inline void flush()

inline void putc(char c)

template inline void out(int x)

}using io :: in;

using io :: out;

using io :: putc;

using io :: flush;

const int maxn(2e6 + 5);

const int inf(2e9);

struct min

};min mn[maxn];

int n, m, hmn[maxn], addmn1[maxn], addmn2[maxn], addhmn1[maxn], addhmn2[maxn];

inline void update(int x)

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

mid = (l + r) >> 1;

build(x << 1, l, mid), build(x << 1 | 1, mid + 1, r);

update(x);

}inline void puttag(int x, int vmn1, int vmn2, int vhmn1, int vhmn2)

inline void pushdown(int x)

void modify_add(int x, int l, int r, int ql, int qr, int v)

mid = (l + r) >> 1, pushdown(x);

if (ql <= mid) modify_add(x << 1, l, mid, ql, qr, v);

if (qr > mid) modify_add(x << 1 | 1, mid + 1, r, ql, qr, v);

update(x);

}void modify_max(int x, int l, int r, int ql, int qr, int v)

mid = (l + r) >> 1, pushdown(x);

if (ql <= mid) modify_max(x << 1, l, mid, ql, qr, v);

if (qr > mid) modify_max(x << 1 | 1, mid + 1, r, ql, qr, v);

update(x);

}int query_min(int x, int l, int r, int ql, int qr)

int query_hmin(int x, int l, int r, int ql, int qr)

int main()

return flush(), 0;

}

169 UR 11 元旦老人與數列

統計零點的鐘聲馬上就要敲響,2016 年即將要拉開序幕,元旦老人輕手輕腳地來到了 xyz111 的床頭,準備把他的禮物裝進襪子裡。然而,xyz111 居然根本沒有去睡覺!毫無防備的元旦老人落入了他的陷阱之中。原來,xyz111 仰慕正義的元旦老人已經很久了,於是他決定把元旦老人抓來探 討哲 學 病嬌...

UOJ 192 UR 14 最強跳蚤

題目鏈結 暑期課第二天 樹上問題高階 具體內容看筆記部落格吧 題意n個節點的樹t 邊有邊權w 求滿足 u,v 上所有邊權乘積為完全平方數的路徑有多少條 看到 所有邊權乘積為完全平方數 想到完全平方數的特殊性 就是分解質因數後 質因數指數都為偶數 然後就想到分解邊權質因數 判質路徑邊權奇偶性 後者由於...

uoj 513 UR 19 清掃銀河

很簽到題 操作2先假設全部為黑,那麼變成了每選乙個點便會取反相連的邊 如果能暴力搞出所有環就可以高斯消元判斷,也許能過40 對原圖建dfs樹,發現只需要保留返祖邊加上對應路徑的環即可,任何的環都可以通過這些環異或得到,於是環的個數變為m級別,高斯消元o m 3 可以70 設返祖邊 u,v,w 的選擇...