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為偶數,這個多...