BZOJ 1251 序列終結者 Splay

2021-06-27 01:14:22 字數 1070 閱讀 4818

題目大意:維護區間的最大值,要求可以區間翻轉和區間加減。

思路:弱化版的1500,好長時間沒寫帶標記的splay了,錯誤重重。這個題可以當作帶標記的splay模板了。

code:

#include #include #include #include #define inf 0x3f3f3f3f

#define workpath (root->son[1]->son[0])

using namespace std;

struct splaytree

void combine(splaytree *a,bool dir)

void plus(int c);

void reverse();

void pushup();

void pushdown();

}none(0),*nil = &none,*root;

splaytree:: splaytree(int _)

void splaytree:: plus(int c)

void splaytree:: reverse()

void splaytree:: pushup()

void splaytree:: pushdown()

if(reverse)

}int cnt,asks;

splaytree *buildtree(int l,int r)

void pretreatment()

inline void rotate(splaytree *a,bool dir)

inline void splay(splaytree *a,splaytree *aim)

else

} a->pushup();

}splaytree *kth(splaytree *a,int k)

inline void splayseg(int x,int y)

int main()

else if(flag == 2)

else

} return 0;

}

bzoj 1251 序列終結者

題目在這裡 這應該是splay裸題了吧。對於每個節點儲存5個值,size,max,flag,lazy,val 分別表示這個節點的子樹大小,子樹的最大值,子樹是否有打過翻轉標記,子樹的增加的值,前面的所有都包括這個節點它自己 以及這個節點的當前值。對於一段區間 l,r 的詢問 修改,只需把l 1這個節...

bzoj1251 序列終結者

time limit 20 sec memory limit 162 mb submit 2971 solved 1188 submit status discuss 網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列 要支援幾種操作 d c b a。尤其是...

BZOJ 1251 序列終結者

網上有許多題,就是給定乙個序列,要你支援幾種操作 a b c d。一看另一道題,又是乙個序列,要支援幾種操作 d c b a。尤其是我們這裡的某人,出模擬試題,居然還出了一道這樣的,真是沒技術含量 這樣,我也出一道題,我出這一道的目的是為了讓大家以後做這種題目有乙個 庫 可以依靠,沒有什麼其他的意思...