BZOJ2329 括號修復(Splay)

2021-08-18 16:33:39 字數 1036 閱讀 3214

bzoj

洛谷本來想著用線段樹來寫

但是有乙個區間翻轉

所以不能用線段樹了,就只能用平衡樹

然後直接sp

lay 就好了

注意一下幾個標記的下放問題

這種資料結構真的沒有什麼思路可言。。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define ll long long

#define rg register

#define max 111111

#define ls (t[x].ch[0])

#define rs (t[x].ch[1])

inline

int read()

struct node

t[max];

int rt;

void pushup(int x)

void rotate(int x)

void putrev(int x)

void putinv(int x)

void puteql(int x,int w)

void pushdown(int x)

void splay(int x,int goal)

if(!goal)rt=x;pushup(x);

}int kth(int x,int k)

}int split(int l,int r)

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

char s[max];

int n,m;

int main()

else putinv(x);

}return

0;}

BZOJ2329 括號修復(Splay)

bzoj 洛谷本來想著用線段樹來寫 但是有乙個區間翻轉 所以不能用線段樹了,就只能用平衡樹 然後直接 splay 就好了 注意一下幾個標記的下放問題 這種資料結構真的沒有什麼思路可言。include include include include include include include in...

Bzoj2329 HNOI2011 括號修復

傳送門 答案就是去掉匹配的括號後的左邊右括號個數 2 2取下整和右邊左括號個數 2 2取下整 維護 設 為 1 role presentation style position relative 1 1,為1 role presentation style position relative 1 1...

BZOJ2329 HNOI2011括號修復

bzoj 考慮詢問,如果我們把相互匹配的括號刪除,那麼我們最終會得到形如 的序列。對於這樣乙個序列,我們不妨貪心。將左邊連續的l個右括號,從第乙個到 l 1 2分別改為左括號。對右邊則反之。那麼當l為偶數時,左邊會變得合法。當l為奇數時,會多餘乙個左括號,但由於題目保證了有解,即l r為偶數,這個多...